经典的动态规划题(数塔)。
View Code
1 #include <stdio.h>
2 #define MAX(a,b) ((a)>(b)?(a):(b))
3 #define N 100
4 int a[N][N],f[N];
5 int main()
6 {
7 int n,i,j;
8 while(scanf("%d",&n)!=EOF)
9 {
10 for(i=0;i<n-1;i++)
11 {
12 for(j=0;j<i+1;j++) scanf("%d",&a[i][j]);
13 }
14 for(i=0;i<n;i++) scanf("%d",&f[i]);
15 for(i=n-1;i>0;i--)
16 {
17 for(j=0;j<i;j++) f[j]=MAX(a[i-1][j]+f[j],a[i-1][j]+f[j+1]);
18 }
19 printf("%d\n",f[0]);
20 }
21 return 0;
22 }