1、简单描述
给出一个三角形形状数组,寻找从上到下和最长的路径和。
2、思路
#include<bits/stdc++.h>
using namespace std;
int n;
int a[101][101];
int f[101][101];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
{
cin>>a[i][j];
}
for(int j=1;j<=n;j++) f[n][j]=a[n][j];
for(int i=n-1;i>=1;i--)
{
for(int j=1;j<=i;j++)
{
f[i][j]=a[i][j]+max(f[i+1][j],f[i+1][j+1]);
}
}
cout<<f[1][1]<<endl;
return 0;
}
倒推,从上到下。
设立数组,记忆化搜索,减少计算量。
本文介绍了一个寻找三角形形状数组中从顶到底最长路径和的问题解决方法。通过倒推的方式使用记忆化搜索减少重复计算,提高了算法效率。
255

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



