花生闽南叫土豆吧 关注:4贴子:98
  • 0回复贴,共1

POJ_To the Max_1050

只看楼主收藏回复

http://acm.pku.edu.cn/JudgeOnline/problem?id=1050 AC
#include<stdio.h>
#include<string.h>
#define Max(a,b) a>b?a:b;
#define Min(a,b) a<b?a:b;
const int MAX=99999999;
const int MIN=-99999999;
int n,final_max=MIN;
int m[101][101],c[101],opt[101];
void dp();
void MaxLong();
int main()
{
     memset(c,0,sizeof(c));
     scanf("%d",&n);
     for(int n1=0;n1<n;n1++)
     {
         for(int n2=0;n2<n;n2++)
         {
             scanf("%d",&m[n1][n2]);
         }
     }
     dp();
     printf("%d",final_max);
     return 0;
}
void dp()
{
     for(int i=1;i<=n;i++)
     {
         int s=0;
         for(int j=1;j<=n+1-i;j++)
         {
             for(int k=s;k<i+s;k++)
             {
                 for(int p=0;p<n;p++)
                 {
                     c[p]=c[p]+m[k][p];
                 }
             }
             s++;
             MaxLong();
             memset(c,0,sizeof(c));
         }
     }
}
void MaxLong()
{
     int in_max=MIN;
     opt[0]=c[0];
     for(int i=1;i<n;i++)
     {
         if(opt[i-1]>0)
         {
             opt[i]=opt[i-1]+c[i];
         }
         else
         {
             opt[i]=c[i];
         }
         in_max=Max(in_max,opt[i]);
     }
     final_max=Max(final_max,in_max);
}


IP属地:福建1楼2010-08-21 20:43回复