dp
文章平均质量分 69
Visioner7
这个作者很懒,什么都没留下…
展开
-
hdu 1003
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目的大意就是求一个数列中最大的子序列的和,并记录子序列开始与结束的元素在原数列中的位置,最后一起输出 其实就是一个最大子序列问题 题目并不难,但是可以说是入门dp的开始。 下面附上代码:#include #include using namespace std; int arr[100原创 2013-11-29 23:26:23 · 579 阅读 · 0 评论 -
hdu 1081
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1081 这道题是前文提到的Max Sum的强化版:http://blog.csdn.net/custcoder/article/details/17033323 给一个二维数组,然后用一个任意大小的矩形框去框二维数组的元素,使得矩形内元素之和最大 在DP中,就是经典的最大子矩阵问题. 其实可以将二维原创 2013-11-30 01:42:29 · 517 阅读 · 0 评论 -
hdu 2159
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1159 题意很简单,即求两个字符串的最长公共子序列的长度 利用一个二维数组dp[i][j]储存,第一个字符串前I个字符与第二个字符串前j个字符的公共子串长度,一种回溯的思想。 状态转移方程: if(str[i-1]!=str[j-1]) dp[i][j]=Max(dp[i-1][j],dp[i][原创 2013-11-30 03:40:38 · 513 阅读 · 0 评论 -
hdu 2844 Coins
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2844 题目的意思其实是求硬币的组合方案,使得硬币的价值总额不超过m 一个很典型多重背包问题 这个题目如果用0-1背包来做,是会超时的,所以用多重背包,其实差别很小,只不过不能用逆序的方法,要采取顺序,理由是并不清楚前一次可以取多少枚硬币 同时采用2进制的处理方法。 代码如下: #inclu原创 2013-12-08 01:12:45 · 488 阅读 · 0 评论