简单动态规划
/*
PROG:
LANG: C++11
*/
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <cstdlib>
#include <climits>
#include <ctype.h>
#include <queue>
#include <stack>
#include <vector>
#include <utility>
#include <deque>
#include <set>
#include <map>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <time.h>
using namespace std;
#define mst(a,b) memset(a,b,sizeof(a))
typedef long long ll;
typedef pair<int, int> P;
const ll MOD = 1000000007;
const int INF = 0x7fffffff;
const int MAXN = 401;
int matrix[400][400];
int n;
int main()
{
cin >> n;
for(int i = 0; i < n; i++)
for(int j = 0; j <= i; j++)
cin >> matrix[i][j];
for(int i = n-2; i >= 0; i--)
for(int j = 0; j <= i; j++)
matrix[i][j] = matrix[i][j] +
max(matrix[i+1][j], matrix[i+1][j+1]);
cout << matrix[0][0] << endl;
return 0;
}