命運(dp)

把以前做的都刷起來!

我確實是一個比較無聊的人啊

#include<stdio.h>
#include<string.h>
int n,m;
int map[21][1010];
int sum[21][1010];
int max(int x,int y)
{
 if(x>y)
 {
  return x;
 }
 else
 {
  return y;
 }
}
int main()
{
 //freopen("in.txt","r",stdin);
 int cas,maxnum;
 int i,j,k;
 while(scanf("%d",&cas)!=EOF)
 {
  while(cas--)
  {
   scanf("%d%d",&n,&m);
   for(i=1;i<=n;i++)
   {
    for(j=1;j<=m;j++)
    {
     scanf("%d",&map[i][j]);
    }
   }
   memset(sum,0,sizeof(sum));
   sum[1][1]=map[1][1];
   for(i=2;i<=n;i++)
   {
    sum[i][1]=sum[i-1][1]+map[i][1];
   }
   for(i=1;i<=m;i++)
   {
    sum[0][i]=-10000000;
   }
   for(j=2;j<=m;j++)
   {
    for(i=1;i<=n;i++)
    {
                 maxnum=-10000000;
     for(k=1;k<=j-1;k++)
     {
      if(j%k==0||k==j-1)
      {
       maxnum=max(maxnum,sum[i][k]);
      }
     }
     sum[i][j]=max(sum[i-1][j],maxnum)+map[i][j];
    }
    
   }
   printf("%d\n",sum[n][m]);
  }
 }
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章