随笔分类 -  动态规划

摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087题目本质上要求我们求给定序列的最长的递增序列,由于刚接触DP,所以一开始还把状态方程写错了,还特地看了运筹学和算法导论的动态规划这一部分。以下是错误的解题历程,读者可以忽略这部分“【 】”。【(sum[i]保存的是当前求得的最大和,d[i]保存的是第i个数,sum[i]=max{sum[i-1],sum[i-1]+d[i]}条件是:d[i-1]>d[i])。接着写成:sum[i]=sum[i-1]+d[i](d[i-1]<d[i])(注意:这里的d[i-1]不一定紧挨着d[i]的, 阅读全文
posted @ 2013-05-30 23:04 windysai 阅读(177) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 在没学01背包时做的,很遗憾的是,wa了很多次。 wa代码 1 #include 2 #include 3 using namespace std; 4 5 struct back 6 {... 阅读全文
posted @ 2013-05-21 20:57 windysai 阅读(265) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 经典的DP入门题。最近学起DP,做回这道题目,用的是自顶向上的方法来求解,发现代码很长,不过时间短了,这应该就是传说中的“以空间换时间”的说法吧。个人觉得,这比较符合人的思考模式,不过真的很繁琐,由于不知道最后一行中最大和的具体位置,还要比较找出。 状态转移方程是(设f(i, j)为三角形上从点(i,j)出发向下走的最大和路径, a(i, j)表示原始输入的第 i 行第 j 列的数: f(i, j) = a(i, j) + max{f(i-1, j-1), f(i-1, j)} i != j 阅读全文
posted @ 2013-05-21 20:14 windysai 阅读(221) 评论(0) 推荐(0)