poj1050动态规划
#include<stdio.h>
int array[101][101];
int maxSubArray(int n,int b[])
{
int i,sum=0,k=-11000;
for(i=0;i<n;i++)
{
if(sum>0)sum+=b[i];
else sum=b[i];
if(sum>k)k=sum;
}
return k;
}
int maxSubMatrix(int n)
{
int i,j,k,l,sum=-100000;
int b[101],max=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
b[j]=0;
}
for(k=i;k<n;k++)
{
for(l=0;l<n;l++)
b[l]+=array[k][l];
max=maxSubArray(l,b);
if(max>sum)
sum=max;
}
}
return sum;
}
int main()
{
int n,i,j;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&array[i][j]);
printf("%d\n",maxSubMatrix(n));
}
}

浙公网安备 33010602011771号