这道题主要是搞清楚一维的情况,然后推至二维
#include <stdio.h>
int main()
{
int N,i,j,k,Max=0,temp;
int a[101][101];
int b[101];
scanf("%d",&N);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
{
memset(b,0,sizeof(b));
for(j=i;j<N;j++)
{
temp=0;
for(k=0;k<N;k++)
{
b[k]=a[j][k]+b[k];
}
for(k=0;k<N;k++)
{
if(temp<0)
temp=0;
temp+=b[k];
if(temp>Max)
Max=temp;
}
}
}
printf("%d\n",Max);
return 0;
}