动态规划
kay_zhyu
这个作者很懒,什么都没留下…
展开
-
NYOJ10——skiing
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=10http:// 分析:其实这个题目是一维的最长子序列的变形。如果是一维的,那我们访问到数组的第i个数时,它的最长递增子序列只和前一个比它小的数有关,假设这个数的下标是j,故取max(dp[i],dp[j-1] + 1)。 而这里是二维,并且第[i][j]个数是与上下左右四个方向的最长原创 2013-04-14 18:34:37 · 740 阅读 · 0 评论 -
NYOJ15——括号匹配(二)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=15http:// 题目分析:最开始我想的是用栈来做,结果发现每次求最小不是那么容易的事情。再说这道题划分在动态规划之中也是有它的原因的。这里用一个数组dp来记录从字符串的位置i到位置j至少需要添加的括号数。当然如果i到j只包含一个字符,那dp[i][j]一定为1;否则就赋值成一个比较大的原创 2013-04-14 20:34:52 · 811 阅读 · 0 评论 -
NYOJ16——矩形嵌套
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=16 题目分析:实际上这个题和HDU上的一道题是一样的。不过这里针对每一个矩形,只需要分别把长、宽和宽、长组成的矩形放入数组中进行考虑,相对来说这道题要简单一些。HDU的链接:http://blog.csdn.net/kay_zhyu/article/details/8728642 #i原创 2013-04-15 16:42:56 · 1028 阅读 · 0 评论 -
NYOJ17——单调递增最长子序列
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=17 题目分析:这是基本题,没什么好分析的。只有把基础算法烂熟于心,才能更好的应付那些算法的变种。 相关题目链接:http://blog.csdn.net/kay_zhyu/article/details/8714581 http://blog.csdn.net/kay_zhyu/ar原创 2013-04-15 16:51:11 · 600 阅读 · 0 评论 -
NYOJ18——The Triangle
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=18 其实HDU上貌似也有这道题,不过我暂时忘了,等下次见到了再加到这里来。这题实际上就是给一个三角的数,这些数保存在一个二维数组中。从最顶上的元素下来,可能向左,可能向右,一直往下。假设遍历到第k行第j个元素的时候,最大和为dp[k][i],它的大小只与上一行的第i-1和第i个元素相关,原创 2013-04-15 18:17:53 · 669 阅读 · 0 评论 -
NYOJ36——最长公共子序列
题目链接: 题目分析:假设两个字符串分别标记为str1和str2。建立一个二维的表dp,dp[i][j]表示str1的前i个字符和str2的前j个字符的最长公共子序列的个数,遍历str1和str2的所有元素,如果str1[i] = str2[j],则dp[i][j] = dp[i-1][j-1] + 1;否则dp[i][j] = max(dp[i - 1][j],dp[i][j - 1])。为了原创 2013-04-15 18:55:14 · 907 阅读 · 0 评论 -
杭电ACM1087——Super Jumping! Jumping! Jumping!
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087 题目分析:其实就是就最长递增子序列的变种,将输出改成最大的递增子序列的和 #include #define M 10010 int a[M]; int dp[M]; int LIS(int nLen) { //a是数据数组 //dp是递推数组 //nLen是数组a的长度原创 2013-03-24 21:36:43 · 819 阅读 · 0 评论