动态规划
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
int ** sum = new int*[n];
sum[0] = new int;
cin >> sum[0][0];
for (int i = 1; i < n; i++) {
sum[i] = new int[i+1];
for (int j = 0; j < i+1; j++) {
int now;
cin >> now;
if (j == i) {
sum[i][j] = sum[i-1][j-1] + now;
} else if (j == 0) {
sum[i][j] = sum[i-1][j] + now;
} else {
sum[i][j] = max(sum[i-1][j], sum[i-1][j-1]) + now;
}
}
}
int ans = 0;
for (int i = 0; i < n; i++) {
if (ans < sum[n-1][i])
ans = sum[n-1][i];
}
cout << ans << endl;
return 0;
}