1.5.1 Number Triangles

简单dp,从底部开始,找每个数字下面2个数字中较大的和自己相加,到最后map(0,0)就是答案,代码如下

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<math.h>
 4 #include<stdlib.h>
 5 #define INF     0x3f3f3f3f
 6 #define Maxin 10000
 7 int map[1010][1010];
 8 int main()
 9 {
10     int x,y,z;
11     scanf("%d",&z);
12     for(x=0;x<z;x++)
13         for(y=0;y<=x;y++)
14             scanf("%d",&map[x][y]);
15         for(x=z-1;x>=0;x--)
16             for(y=0;y<=x;y++)
17                 if(map[x+1][y]>map[x+1][y+1])
18                     map[x][y]+=map[x+1][y];
19                 else
20                     map[x][y]+=map[x+1][y+1];
21         printf("%d\n",map[0][0]);
22     return 0;
23 }

posted on 2012-05-15 13:29  usp10  阅读(140)  评论(0编辑  收藏  举报

导航