#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxx 2147483647
int dp[1000][1000],f[100000];
int main()
{
int n,ans=-maxx;
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&dp[i][j]);
dp[i][j]+=dp[i-1][j];
}
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
memset(f,0,sizeof(f));
int temp1=-maxx;
for(int k=1;k<=n;k++)
{
int temp=dp[j][k]-dp[i-1][k];//第K列从I到J行的值
f[k]=max(temp,temp+f[k-1]);//横向比较
temp1=max(temp1,f[k]);//第i行到第j行的最大子矩阵
}
ans=max(temp1,ans);//整体的最大子矩阵
}
}
printf("%d",ans);
return 0;
}
最大子矩阵

最新推荐文章于 2019-11-07 09:07:26 发布
