纯水题。

 1 #include <stdio.h>
 2 int a[100][100];
 3 int max(int a,int b)
 4 {
 5     return a>b ?a :b ;
 6 }
 7 int main()
 8 {
 9     int n,i,j,ans;
10     while(~scanf("%d",&n))
11     {
12         for(i = 0; i < n; i++)
13             for(j = 0; j <= i; j++)
14                 scanf("%d",&a[i][j]);
15         for(i = 1; i < n; i++)
16             a[i][0] += a[i-1][0],
17             a[i][i] += a[i-1][i-1];
18         for(i = 2; i < n-1; i++)
19             for(j = 1; j < i; j++)
20                 a[i][j] += max(a[i-1][j-1],a[i-1][j]);
21         ans = max(a[n-1][0],a[n-1][n-1]);
22         for(j = 1; j < n-1; j++)
23         {
24             a[n-1][j] += max(a[n-2][j-1],a[n-2][j]);
25             ans = max(ans,a[n-1][j]);
26         }
27         printf("%d\n",ans);
28     }
29     return 0;
30 }