这就是一个动态规划问题,关键在于表格的记录,
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a > b;
}
int a[500][500];
int b[500][500];
int main()
{
int n;
cin >> n;
memset(b,0,sizeof(b));
for(int i = 1;i <= n; ++i)
for(int j = 1; j <= i;++j)
{
cin >> a[i][j];
}
b[1][1] = a[1][1];
for(int i = 2;i <= n; ++i)
{
for(int j = 1; j <= i; ++j)
{
if(j == 1)
{
a[i][j] += a[i - 1][1];
}
else
{
if(j == i)
{
a[i][j] += a[i - 1][j - 1];
}
else
{
int c = max(a[i - 1][j - 1],a[i - 1][j]);
a[i][j] += c;
}
}
}
}
int ans = -1;
for(int i = 1; i <= n; ++i)
{
if(a[n][i] > ans)
{
ans = a[n][i];
}
``
cout << ans << endl;
return 0;
}