描述
题解
从底层向上层推。一个简单的动态规划。
代码
#include <iostream>
#include <cstdio>
using namespace std;
const int MAXN = 125300;
int A[MAXN];
int main(int argc, const char * argv[])
{
// freopen("input.txt", "r", stdin);
int N;
while (cin >> N)
{
int key = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j <= i; j++)
{
scanf("%d", &A[key++]);
}
}
int line = N - 1;
int E = key - N - 1;
for (int i = line; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
A[E] += A[E + i] > A[E + i + 1] ? A[E + i] : A[E + i + 1];
E--;
}
}
cout << A[0] << '\n';
}
return 0;
}

本文介绍了一道ACM竞赛题目中应用动态规划解决的最大路径和问题。通过从底层开始向上层递推的方式,逐步求解出最优解。文章提供了完整的C++代码实现,并详细解释了关键步骤。
988

被折叠的 条评论
为什么被折叠?



