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

来源:互联网 发布:为什么贫穷 出路 知乎 编辑:程序博客网 时间:2024/04/30 05:15

吃土豆

时间限制: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;}


原创粉丝点击