动态规划
文章平均质量分 72
qq_2773878606
学生
展开
-
棋盘寻宝
题目描述:现在有一个8*8的棋盘,上面放着64个价值不等的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0小于1000),一个人的初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下角,请设计一个算法使其能够获得最大价值的礼物。输入:输入包含多个测试用例,每个测试用例共有8行8列,第i行的第j列的数字代表了该处棋原创 2016-07-27 19:24:03 · 371 阅读 · 0 评论 -
最长回文子串
回文串是指这个字符串无论从左读还是从右读,所读的顺序是一样的;简而言之,回文串是左右对称的。现在,对于一个给定的母串abcdedcb可以找出子串a, ded, cdedc, bcdecdb等均是回文串;显然,bcdecdb是其中最长的那一个。但是该如何找出最长的回文子串呢?穷举法/*判断str[i..j]是否为回文串*/int isPalindrome(char *s转载 2016-07-28 15:45:04 · 368 阅读 · 0 评论 -
求字符串中最长无重复字符的子串
题目:求一个字符串中最长的没有重复字符的子串。思路:用hash表从i遍历查看包含i的最长 无重复子串。int max_unique_substring2(char * str) { int i,j; int begin; int maxlen = 0; int hash[256]; int n = strlen(str); for(原创 2016-07-28 15:29:50 · 809 阅读 · 0 评论 -
最长上升子序列
问题描述 对于一串数A={a1a2a3…an}它的子序列为S={s1s2s3…sn},满足{s123…sm}。求A的最长子序列的长度。动态规划法算法描述: 设数串的长度为n,L[i]为以第i个数为末尾的最长上升子序列的长度,a[i]为数串的第i个数。 L[i]的计算方法为:从前i-1个数中找出满足a[j]表达转载 2016-07-28 16:47:42 · 324 阅读 · 0 评论 -
0-1背包问题(一维数组解法)
0-1背包问题: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 这个问题的特点是:每种物品只有一件,可以选择放或者不放。算法基本思想:利用动态规划思想 ,子问题为:f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。其状态转移方程是:f[i][v]=m转载 2016-07-29 09:05:48 · 2550 阅读 · 1 评论 -
最小邮票数
题目描述: 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值。 如,有1分,3分,3分,3分,4分五张邮票,要求凑成10分,则使用3张邮票:3分、3分、4分即可。输入: 有多组数据,对于每组数据,首先是要求凑成的邮票总值M,M输出: 对于每组数据,能够凑成总值M的最少邮票张数。若无解,输出0。样例转载 2016-07-29 09:18:10 · 730 阅读 · 0 评论 -
两船载物问题
题目1462:两船载物问题时间限制:1 秒内存限制:128 兆特殊判题:否提交:690解决:167题目描述:给定n个物品的重量和两艘载重量分别为c1和c2的船,问能否用这两艘船装下所有的物品。输入:输入包含多组测试数据,每组测试数据由若干行数据组成。第一行为三个整数,n c1 c2,(1 接转载 2016-07-29 09:32:25 · 575 阅读 · 0 评论 -
Jobdu MM分水果
题目1420:Jobdu MM分水果题目描述:Jobdu团队有俩PPMM,这俩MM干啥都想一样。一天,富强公司给团队赞助了一批水果,胡老板就把水果派发给了这俩MM,由她们自行分配。每个水果都有一个重量,你能告诉她们怎么分才使得分得的重量差值最小吗?输入: 输入有多组数据,每组数据第一行输入水果个数n(1输出:对每组输入输出一行,输出可以得到的最小转载 2016-07-29 09:36:34 · 649 阅读 · 0 评论 -
买饭问题
食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。输入:多组数据。对于每组数据:第一行为正原创 2016-07-27 21:51:12 · 579 阅读 · 1 评论 -
九度-1463-招聘会
题目描述:又到毕业季,很多大公司来学校招聘,招聘会分散在不同时间段,小明想知道自己最多能完整的参加多少个招聘会(参加一个招聘会的时候不能中断或离开)。输入:第一行n,有n个招聘会,接下来n行每行两个整数表示起止时间,由从招聘会第一天0点开始的小时数表示。n 输出:最多参加的招聘会个数。样例输入:39 1010 208 15转载 2016-07-29 10:25:14 · 412 阅读 · 0 评论 -
0-1背包问题
背包问题,常见的有三种类型:基本的0-1背包、完全背包和多重背包、二维背包 首先是基本的0-1背包问题。因为这里的物品一般指花瓶、玉器什么的,要么拿、要么不拿,只有0和1两种状态,所以也叫0-1背包。0-1背包虽然简单,却很重要,是“万法之源”,是其他几类问题的基础。 初学者有时会认为,0-1背包可以这样求解:计算每个物品的Vi/Wi,然后依据Vi/转载 2016-07-28 15:19:30 · 343 阅读 · 0 评论 -
Unique Paths
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the原创 2016-07-27 19:59:47 · 201 阅读 · 0 评论 -
Unique Paths II
Follow up for "Unique Paths":Now consider if some obstacles are added to the grids. How many unique paths would there be?An obstacle and empty space is marked as 1 and 0 respectively in the gr原创 2016-07-27 20:02:30 · 179 阅读 · 0 评论 -
Minimum Path Sum
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right whichminimizes the sum of all numbers along its path.Note: You can only move either down or right at原创 2016-07-27 20:16:33 · 212 阅读 · 0 评论 -
Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [−2,1,−3,4,−1,2,1,−5,4],the contiguous subarray [4,−1,2,1] ha原创 2016-07-27 20:22:15 · 206 阅读 · 0 评论 -
Maximum Product Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest product.For example, given the array [2,3,-2,4],the contiguous subarray [2,3] has the larges原创 2016-07-27 20:27:56 · 219 阅读 · 0 评论 -
项目安排[动态规划]
题目描述:小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的。由于小明马上就要硕士毕业了,面临着买房、买车、给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包。万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项目才能保证赚钱最多(注意:做项目的时候,项目不能并行,原创 2016-07-27 21:25:00 · 1001 阅读 · 0 评论 -
Longest Increasing Subsequence
Given an unsorted array of integers, find the length of longest increasing subsequence.For example,Given [10, 9, 2, 5, 3, 7, 101, 18],The longest increasing subsequence is [2, 3, 7, 101], ther原创 2016-07-28 08:51:54 · 294 阅读 · 0 评论 -
最长公共子序列
最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别为:子串是串的一个连续的部分,子序列则是从不改变序列的顺序,而从序列中去掉任意的元素而获得新的序列;也就是说,子串中字符的位置必须是连续的,子序列则可以不必连续。动态规划方法:1、序列str1和序列str2 ·原创 2016-07-28 09:13:01 · 286 阅读 · 0 评论 -
最长公共子串
找 两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。其实这又是一个序贯决策问题,可以用动态规划来求解。我们采用一个二维矩阵来记录中间的结 果。这个二维矩阵怎么构造呢?直接举个例子吧:"bab"和"caba"(当然我们现在一眼就可以看出来最长公共子串是"ba"或"ab") b a bc 0 0 0a 0 1 0b 1 0 1原创 2016-07-28 09:42:40 · 335 阅读 · 0 评论 -
字符串编辑距离
要想把字符串S1变成S2,可以经过若干次下列原子操作:1.删除一个字符2.增加一个字符3.更改一个字符字符串S1和S2的编辑距离定义为从S1变成S2所需要原子操作的最少次数。解法跟上面的最长公共子序列十分相似,都是动态规划,把一个问题转换为若干个规模更小的子问题,并且都借助于一个二维矩阵来实现计算。约定:字符串S去掉最后一个字符T后为S',T1和T2分别是S1和S2的最原创 2016-07-28 09:52:16 · 281 阅读 · 0 评论 -
今年暑假不AC
题目1434:今年暑假不AC时间限制:1 秒内存限制:128 兆特殊判题:否提交:307解决:180题目描述:“今年暑假不AC?”“是的。”“那你干什么呢?”“看世界杯呀,笨蛋!”“@#$%^&*%...”确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视作为球迷,一定想看尽量多的完整的比赛,转载 2016-07-29 10:42:56 · 599 阅读 · 0 评论