http://poj.org/problem?id=1050
题意:给你一个n*n的矩阵,要求求最大矩阵和(矩阵和就是矩阵内所有数字和)
思路:从一维的开始吧,给你一段数字要求求出最大某段数字和,
比如:
8
-7 9 -3 6 5 -2 1 -4
答案明显是 9 -3 6 5 和为17
dp[i]表示以a[i]结尾的最大数字和。
代码如下:
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++)
{
if(dp[i-1]>=0)
dp[i]=dp[i-1]+a[i];
else
dp[i]=a[i];
}
接下来思考二维的:
我们首先把二维的数据转换成一维的。
dp[i][j][k]表示从i行到j行以k列为结束的矩阵的最大数字和。
比如:
4
0 -2 -7 0
-4 1 -4 1
9 2 -6 2
-1 8 0 -2
比如开始i=1;j=