Peng Lv

毋意,毋必,毋固,毋我。 言必行,行必果。

导航

POJ 1050 To the Max

//此题又是DP,我是看了结题报告才想出来的。。。。。。。。。。。。
//苦想了好长时间,就是一层纸捅不破,原来那就
//是应该加一个二维数组记录每行的前i个值得和
//说白了就是记录一下状态,因为题意是一个二维矩阵
//和得优化,所以一维的状态时不能够满足的,看来DP还是没
//理解透彻

 

#include<iostream>
using namespace std;

int main()
{
    
int  a[110][110],i,j,k,sum,max=-10000,s[110][110];
    
int n,temp;
    
while(scanf("%d",&n)!=EOF)
    {
        memset(s,
0,sizeof(s[0][0]));
        
for(i=0;i<n;++i)
            
for(j=1;j<=n;++j)
            {
                scanf(
"%d",&a[i][j-1]);
                s[i][j]
=s[i][j-1]+a[i][j-1];
            }
        
for(i=0;i<n;++i)
            
for(j=i;j<n;++j)
            {
                sum
=0;
                
for(k=0;k<n;++k)
                {
                    temp
=s[k][j]-s[k][i];
                    sum
+=temp;
                    
if(sum<0) sum=0;
                    
else if(sum>max)
                        max
=sum;
                }
            }
        printf(
"%d\n",max);
    }
    
return 1;
}

 


 

posted on 2010-02-03 16:30  Lvpengms  阅读(551)  评论(0编辑  收藏  举报