#include<stdio.h>
#include<string.h>
int max( int i, int j){
return i > j ? i : j;
}
int main(void){
int n;
int a[405][405];
int d[405][405];
int i, j;
scanf("%d", &n);
for( i = 1; i <= n; i++)
for( j = 1; j <= i; j++)
scanf("%d", &a[i][j]);
memset( d, -1, sizeof(d));
for( j = 1; j <= n; j++) d[n][j] = a[n][j];
for( i = n-1; i >= 1; i--){
for( j = 1; j <= i; j++){
d[i][j] = a[i][j] + max( d[i+1][j], d[i+1][j+1]);
}
}
printf("%d\n", d[1][1]);
return 0;
}
1163和3176基本上是一样的,只不过数据规模不同,把数组开大一点原样粘贴就可以AC两道题,高兴。