0
已解决
#include<iostream>
using namespace std;
int a1[399][399],a2[399][399];//辅助数组
int f[399][399],f1[399][399];//主要数组
int main()
{
int n,m,ans=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>a1[i][j];
if(a1[i][j]==0){
a1[i][j]=-0x3f3f3f3f;
}
a2[i][j]=a2[i][j-1]+a1[i][j];
}
for(int i=1;i<=m;i++)
for(int j=i;j<=m;j++) //第i行到第j行
for(int k=1;k<=n;k++){ //第K列的和
f1[i][j]=max(f1[i][j],0)+a2[k][j]-a2[k][i-1];
f[i][j]=max(f[i][j],f1[i][j]);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
ans=max(ans,f[i][j]);
cout<<ans;
return 0;
}