15
题意
前缀和
题解
#include <cstdio> #include <iostream> #include <algorithm> int i,j,k,l,m,n,ans,sum; int a[101][101]; int main() { scanf("%d",&n); for (i=1;i<=n;i++) for (j=1;j<=n;j++) { scanf("%d",&a[i][j]); if (a[i][j]>ans) ans=a[i][j]; a[i][j]+=a[i-1][j];//前缀和处理 } for (i=1;i<=n;i++)//枚举减去的行 for (j=i;j<=n;j++)//枚举选取的行 { sum=0; for (k=1;k<=n;k++)//枚举列数 { sum=sum+(a[j][k]-a[i-1][k]); if (sum>ans) ans=sum; if (sum<0) sum=0; } } printf("%d",ans); }