问题描述
代码
#include<iostream>
using namespace std;
int N;
int a[100][100];
int f[100][100];
int ans;
int main(){
cin>>N;
for(int i=1;i<=N;++i){
for(int j=1;j<=N;++j){
cin>>a[i][j];
//f[i][j]存储第i行前j个数字的和
f[i][j]=f[i][j-1]+a[i][j];
}
}
ans=a[1][1];
for(int fir=1;fir<=N;++fir){
for(int las=fir;las<=N;++las){
int sum=0;
for(int i=1;i<=N;++i){
sum+=(f[i][las]-f[i][fir-1]);
ans=max(ans,sum);
sum=max(sum, 0);
}
}
}
cout<<ans;
return 0;
}