@fuheimao
2017-07-22T19:22:30.000000Z
字数 1204
阅读 658
未分类
在此输入正文
#include<iostream>
#include<cstring>
using namespace std;
int n;
int a[101][101];
int ss[101][101];//ss[i][j]表示第i列前j个的前缀和
int k[101],s[101];
int b[101][101];
int main()
{
cin>>n;
memset(b,0x3f,sizeof(b));
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
ss[i][1]=a[1][i];
for(int i=1;i<=n;i++)
for(int j=2;j<=n;j++)
ss[i][j]=ss[i][j-1]+a[j][i];
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
{
for(int p=1;p<=n;p++)
{k[p]=ss[p][i]-ss[p][j-1];
}
s[1]=k[1];
for(int p=2;p<=n;p++)
{s[p]=max(0,s[p-1])+k[p];
}
for(int p=1;p<=n;p++)
if(b[i][p]>s[p])
b[i][p]=s[p];
}
int maxn=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
maxn=maxn>b[i][j]?maxn:b[i][j];
cout<<maxn;
}
#include<iostream>
#include<cstring>
using namespace std;
int n;
int a[101][101];
int ss[101][101];//ss[i][j]表示第i列前j个的前缀和
int k[101],s[101];
//int b[101][101];
int main()
{
cin>>n;
//memset(b,0x3f,sizeof(b));
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
//for(int i=1;i<=n;i++)
// ss[i][1]=a[1][i];
int maxn=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
ss[i][j]=ss[i][j-1]+a[j][i];
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
{
for(int p=1;p<=n;p++)
{k[p]=ss[p][i]-ss[p][j-1];
}
s[1]=k[1];
for(int p=2;p<=n;p++)
{s[p]=max(0,s[p-1])+k[p];
}
for(int p=1;p<=n;p++)
maxn=max(s[p],maxn);
}
cout<<maxn;
}