动态规划
文章平均质量分 53
小暖萌萌
这个作者很懒,什么都没留下…
展开
-
POJ1458 Common Subsequence
典型的动态规划问题这道题目的大概意思就是给你两个字符串,比较一下两个字符串里有多少个字符是相同的 这道题目我用的方法是构造一个矩阵,行是s1,列是s2 ,当两个字符的前一个字符相等的时候就maxlen[i][j]=maxlen[i-1][j-1]+1.即对角线上的上面一个的值加1,否则就比较本身上方或者左方的最大值,然后存储max的值,这样对角线的最后一个值就是最大值输入abcfb原创 2014-11-29 13:28:14 · 251 阅读 · 0 评论 -
hdu2084数塔
和我一周之前所做的题目很相似,这个是一道简单的dp问题想知道从第N行到最后一行的最大sum,就得知道从n-1行到最后一行的最大sum值,这样下来就是一个逆推的过程从最后一行开始求,一行一行往上求,直到第一行,但是刚开始需要把sum这个数组的值全部赋成数塔的最后一行的值#includeconst int MAX=101;int max(int c,int d){ return c原创 2014-12-13 10:32:25 · 306 阅读 · 0 评论 -
hdu2571命运
题目的大概意思就是给你一个n行的数组,每行有m个数,求出来到第n行m个数的最大和,每次可以走的地方就是【i+1】【j】和【i】【j*k】这些地方想要知道到最后一个地方最大sum值就必须的知道上一行的值或者同行的成倍数的值到底哪一个大所以从第一行的第一个数开始算,依次求出来一行里的每一列的最大值,每行的最大值无非就是上一行的对应相同列的数,或者是同行j%p==0,或者是j-1三个里的最大值加原创 2014-12-13 11:42:04 · 303 阅读 · 0 评论 -
hdu1231最大连续子序列
依旧是动态规划的问题,给你一个长度为n的数组,求里面子序列的最大和,然后输出这个最大子序列的和,子序列开始的数和子序列结束的数这道题和1003的那道题的做法很相似,我就是在道题的代码基础上改的,这个要判别一下,整个数组是不是全部为负数,若是,则sum=0我的想法是最后判定一下它的sum值,若小于0,直接输出0和数组的第一个数和最后一个数输入6-2 11 -4 13 -5 -2原创 2014-12-06 10:35:29 · 349 阅读 · 0 评论 -
hdu1003 最大连续子序列和
简单的动规问题,题目的大概意思就是给一个数组,求这个数组子序列的最大值这个题目其实不需要建立数组,设一个变量sum来存储它的值,当这个sum值小于0的时候就把它置零然后再用两个变量来保存开始和结束的子序列的下标当开始做的时候我还使用了二维数组的做法,使用了三层for循环,结果可想而知,超时后来用这个方法提交的时候,好几次都是格式错误,比较坑了输入15 6 -1 5 4原创 2014-12-03 18:35:43 · 440 阅读 · 0 评论 -
POJ1050To the Max
这道题目的 意思大概就是,给你一个二维数组,形成一个矩阵,求出来最大连续的和,这个和的形成也是来源于其中的一个子矩阵这道题目我是看了别人的思想才做出来的,就是先求出每行的和,逐次保存,然后再求出任意从第i行到第j列的和,有一个边界的保存,就是当sum值小于零了,就把sum置零输入40 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0原创 2014-12-01 20:21:52 · 473 阅读 · 1 评论 -
POJ2479Maximum sum
刚做完2593这道题目,就做了这道题,相同的代码就A过了只不过把测试案例的个数增加了,这道题目依旧是求两个不相交子序列的和的最大值输入1101 -1 2 2 3 -3 4 -4 5 -5输出13#includeconst int max=100010;int main(){ int n,a[max],maxl[max],m; scanf("%d",&原创 2014-11-29 14:23:03 · 322 阅读 · 0 评论 -
POJ2593 Max Sequence
动态规划问题题目的大体意思就是给你一个长度为N的数组,然后求两个不相交的子序列的相加的最大和刚开始我没有想到分别从前后求子序列的和,并且保存最大值,后来看了别人的解题报告,忽然懂得了先从i=0开始求从0到N-1的子序列的和,保存最大值,然后从N-1开始求右边最大子序列的和然后设一个变量用来保存两个子序列和,输出最大值。自己写代码的时候有一点被自己坑到了,直接从N-1到0,其实到原创 2014-11-29 14:14:54 · 339 阅读 · 0 评论 -
POJ1163 The Triangle
这是一道很简单的动态规划的题目,就是求三角形从上至下的一条最长路径之和,每次都只能选择自己右下或者左下的两个点来走刚开始输入一个N 表示是一个直角边长为 N的三角形要求第一行到最底下的最长路径,就得知道从第二行到最底下的最长路径,故依次类推,推导到最后一行,实际上就成了一个递归当在最后一行的时候就是maxsum[i][j]=D[i][j],其余的则是maxsum[i][j] =max原创 2014-11-29 13:31:05 · 242 阅读 · 0 评论 -
hdu2059龟兔赛跑
额,发现自己有点笨了,这道题实际上是在网上看了别人的思想才做的这道题目的大概就是乌龟和兔子赛跑,乌龟有电动车和充电站电动车有电的情况下是vt1 m/s,没电的情况下是vt2 m/s 每次充电花费time s,每次充满电可以走C米路上有N个充电站,乌龟可以选择充电或者不充电,兔子一直以恒定的速度vr m/s跑,求出来乌龟所用的最少时间和兔子时间比较每次求出从0到第j充电站是充满电的情原创 2014-12-13 20:38:16 · 358 阅读 · 0 评论