原题传送门
#include <bits/stdc++.h>
using namespace std;
int f[1005][1005];//f[i][j]是走到i行j列时最大值
int main()
{
int row;//行数
cin >> row;
int in;
for (int i = 1; i <= row; i++)
{
for (int j = 1; j <= i; j++)
{
cin >> in;
f[i][j] = max(f[i - 1][j - 1], f[i - 1][j]) + in;//转移方程
}
}
int maxx = -1;
for (int i = 1; i <= row; i++)//在最后一行找到最大值
{
maxx = max(maxx, f[row][i]);
}
cout << maxx << endl;
}