Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 20040 Accepted: 11615

       本题相当的简单,就是简单的DP问题。从倒数第二层开始,每一层记录下上一层相邻最大的值,a[i][j]=max(a[i+1][j+1],a[i+1][j])+a[i][j]。a[1][1]即是所要求的值:

代码:

 

1 #include<stdio.h>
2  int max(int a,int b)
3 {
4 if(a>b)
5 return a;
6 return b;
7 }
8  int main()
9 {
10 int a[105][105],i,j,n;
11 scanf("%d",&n);
12 for(i=1;i<=n;i++)
13 for(j=1;j<=i;j++)
14 scanf("%d",&a[i][j]);
15 for(i=n-1;i>=1;i--)
16 for(j=1;j<=i;j++)
17 a[i][j]=max(a[i+1][j],a[i+1][j+1])+a[i][j];
18 printf("%d\n",a[1][1]);
19 return 0;
20 }
21