吃土豆 递归分制算法(浪费时间)

吃土豆

时间限制:1000 ms  |  内存限制:65535 KB

难度:4

描述

Bean-eating is an interesting game, everyone owns an M*N matrix, which isfilled with different qualities beans. Meantime, there is only one bean in any1*1 grid. Now you want to eat the beans and collect the qualities, but everyonemust obey by the following rules: if you eat the bean at the coordinate(x, y),you can’t eat the beans anyway at the coordinates listed (if exiting): (x,y-1), (x, y+1), and the both rows whose abscissas are x-1 and x+1.



Now, how much qualities can you eat andthen get ?

输入

Thereare a few cases. In each case, there are two integer M (row number) and N(column number). The next M lines each contain N integers, representing thequalities of the beans. We can make sure that the quality of bean isn't beyond1000, and 1<=M,N<=500.

输出

Foreach case, you just output the MAX qualities you can eat and then get.

样例输入

4 6

11 0 7 513 9

78 4 81 622 4

1 40 9 3416 10

11 22 0 3339 6

样例输出

242

来源

2009 Multi-University Training Contest 4

上传者

张洁烽

#include<stdio.h>
int max(int m,int *a){
       inti,f[510];
       for(i=1;i<=m;i++)
       {
              if(i==1)  f[i]=a[i];
              elseif(i==2) f[i]=a[i]>a[i-1]?a[i]:a[i-1];
              else
              {                  
                     f[i]=(f[i-2]+a[i])>f[i-1]?f[i-2]+a[i]:f[i-1];
              }
       }
       returnf[m];
}//非递归推算法
/*int max(int m,int *a){
       if(m==1)returna[1];
       if(m==2)returna[2]=a[1]>a[2]?a[1]:a[2];
       returnmax(m-2,a)+a[m]>max(m-1,a)?max(m-2,a)+a[m]:max(m-1,a);
}*///递归分制算法(浪费时间)
int main(){
       inta[510],b[510],i,j,m,n;
       while(scanf("%d%d",&n,&m)==2)
       {
              for(i=1;i<=n;i++)
              {
                     for(j=1;j<=m;j++)
                     {
                            scanf("%d",&a[j]);
                     }
                     b[i]=max(m,a);
              }
              printf("%d\n",max(n,b));
       }
       return0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值