1051
求m行n列的最大子矩阵和
int main() {
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//ifstream s("photo.in");
//ofstream c("photo.out");
cin>>n>>m;
//m是行数,n是列数
rep(i,1,m) rep(j,1,n) cin>>a[i][j];
rep(i,1,m) rep(j,1,n) sum[j][i]=sum[j][i-1]+a[i][j];
ll ans=0;
/*
暴力枚举i行到j行c列的和,此时,将这一列看作一维的数
当成一维的 最大子段和
时间复杂度n3
*/
rep(i,1,m) {
rep(j,i,m) {
ll res=0;
rep(c,1,n) {
if(res>0) res+=sum[c][j]-sum[c][i-1];
else res=sum[c][j]-sum[c][i-1];
if(res>ans) ans=res;
}
}
}
cout<<ans;
return 0;
}