思路:找出最佳路径,使其和值最大,逆向找出最大值,往前推比较简单。此题较为容易,动态规划的简单的题。
代码如下:
#include <iostream>
#include <map>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int a[101][101];
int main()
{
int i,j,n;
cin >> n;
for(i=0; i<n; i++)
for(j=0; j<=i; j++)
cin >> a[i][j];
for(i=n-2; i>=0; i--)
for(j=0; j<i+1; j++)
a[i][j]+=max(a[i+1][j],a[i+1][j+1]); //动态规划
cout<<a[0][0]<<endl;
return 0;
}