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 }