简单dp。。。
AC代码如下:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
int num[110][110], dp[110][110];
int N;
while( scanf( "%d", &N ) != EOF ){
for( int i = 0; i < N; i++ ){
for( int j = 0; j <= i; j++ ){
scanf( "%d", &num[i][j] );
}
}
dp[0][0] = num[0][0];
for( int i = 1; i < N; i++ ){
dp[i][0] = num[i][0] + dp[i-1][0];
}
for( int i = 1; i < N; i++ ){
for( int j = 1; j < i; j++ ){
dp[i][j] = num[i][j] + max( dp[i-1][j], dp[i-1][j-1] );
}
dp[i][i] = num[i][i] + dp[i-1][i-1];
}
int ans = -0x3f3f3f3f;
for( int i = 0; i < N; i++ ){
ans = max( ans, dp[N-1][i] );
}
cout << ans << endl;
}
return 0;
}