纯水题。
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 }