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));
 }
}

posted @ 2011-08-22 21:46  junxing  阅读(182)  评论(0)    收藏  举报