NO.1
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
using namespace std;
int a[1000][1000];
int b[1000];
int judge(int n,int b[1000])
{
int c[1000];
c[1]=b[1];
int i;
for(i=2;i<=n;i++)
c[i]=max(c[i-1]+b[i],b[i]);
int u=-99999999;
for(i=1;i<=n;i++)
u=max(u,c[i]);
return u;
}
int main()
{
int n;
scanf("%d",&n);
int i,j,k,l,maxx=-99999999;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for(i=1;i<=n;i++)
{
for(l=1;l<=n;l++)
b[l]=0;
for(j=i;j<=n;j++)
{
for(k=1;k<=n;k++)
b[k]+=a[j][k];
maxx=max(judge(n,b),maxx);
}
}
cout<<maxx<<endl;
return 0;
}
NO.2
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[110][110];
int b[110][110];
int c[110];
int d[110];
int mn=-9999;
int maxn(int n,int c[110])
{
int i;
for(i=1;i<=n;i++)
d[1]=c[1];
mn=max(mn,d[1]);
for(i=2;i<=n;i++)
{
d[i]=max(d[i-1]+c[i],c[i]);
mn=max(mn,d[i]);
}
return mn;
}
int main()
{
int n;
scanf("%d",&n);
int i,j,k,maxx=-9999,l;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
b[i][j]=b[i-1][j]+a[i][j];
for(i=1;i<=n;i++)
{
for(j=0;j<i;j++)
{
for(k=1;k<=n;k++)
c[k]=b[i][k]-b[j][k];
maxx=max(maxx,maxn(n,c));
}
}
cout<<maxx<<endl;
return 0;
}