题目大意
- 给出 n, 给出一个 n 层的 正整数三角形,
- 从上往下,找一条线,要求和最大;
- 必须只能直接向下走,或者走右下角。
题目分析
- 递推的元问题,可以从上往下顺推
- 也可以从下往上,逆推
解题思路:
- a数组存原始数据,直接逆推,保证每个格子都是当前最优解
- 因为没有后效性,所以a [ 1 ] [ 1 ]就是答案
代码1:
//luogu1216:数字三角形,递推经典大水题
//解题思路:
//1 从下往上扫一遍
#include<cstdio>
int n;
int a[1010][1010];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
scanf("%d",&a[i][j]);
}
}
//从下往上
for(int i=n-1;i>=1;i--)
{
for(int j=1;j<=i;j++)
{
if(a[i+1][j]>a[i+1][j+1]) a[i][j]+=a[i+1][j];
else a[i][j]+=a[i+1][j+1];
}
}
printf("%d",a[1][1]);
return 0;
}