poj 1050 To the Max
#include<iostream>
using namespace std;
int rec[101][101];
int sub(int ii,int jj,int len,int wid)
{
int sum=0;
for(int i=ii;i<=len;i++)
for(int j=jj;j<=wid;j++)
sum+=rec[i][j];
return sum;
}
int main()
{
int i,j,n,max=-200,ll,ww,s;
cin>>n;
for (i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&rec[i][j]);
if(max<rec[i][j])max=rec[i][j];
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(ll=i;ll<=n;ll++)
for (ww=j;ww<=n;ww++)
{
s=sub(i,j,ll,ww);
if(s<0)
break;
max=max>s?max:s;
}
printf("%d\n",max);
return 0;
}