#include<cstdio>
#include<cstring>
#define MAX(x,y) ((x)>(y)?(x):(y))
int map[120][120];
int dp[120];
int main()
{
int n,res=-1000000;
scanf("%d",&n);
memset(map,0,sizeof(map));
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&map[i][j]);
map[i][j]+=map[i-1][j];
}
for(int k=0;k<n;k++)
{
for(int i=k+1;i<=n;i++)
{
dp[0]=0;
for(int j=1;j<=n;j++)
{
if(dp[j-1]+map[i][j]-map[k][j]>0)
dp[j]=dp[j-1]+map[i][j]-map[k][j];
else
dp[j]=0;
res=MAX(res,dp[j]);
}
}
}
printf("%d\n",res);
}
poj 1050 求矩阵最大的子矩阵和 DP
最新推荐文章于 2021-09-11 19:55:36 发布