摘要:
这一题就是典型的动态规划,从数塔的底部开始用dp[i][j]表示到第i行第i个数的时候数塔的最大值,转移方程为dp[i][j] = dp[i][j] + max{dp[i + 1][j], dp[i + 1][j + 1]}, 显然最后结果为dp[1][1]。AC code: 1 #include <iostream> 2 #define MAX 500 3 using namespace std; 4 int n; 5 int tri[MAX][MAX]; 6 int d[MAX][MAX]; 7 8 void input() 9 {10 for(int i = 1; i < 阅读全文
posted @ 2012-03-04 22:57
背着超人飞
阅读(122)
评论(0)
推荐(0)
摘要:
这一题就是将一维的最大字段和扩展到二维,在一维的求最大字段和的过程中是这样操作的:int max_sum(int n){ int i, j, sum = 0, max = -10000; for(i = 1; i <= n; i++) { if(sum < 0) sum = 0; sum += a[i]; if(sum > max) max = sum; } return sum;}扩展到二维的时候也是同样的方法,不过需要将二维压缩成一维,所以我们要将数据做一下处理,使得map[... 阅读全文
posted @ 2012-03-04 22:41
背着超人飞
阅读(1608)
评论(1)
推荐(2)