【问题描述】
设有一个三角形的数塔,顶点为根结点,每个结点有一个整数值。从顶点出发,可以向左走或向右走,如图所示:
若要求从根结点开始,请找出一条路径,使路径之和最大,只要输出路径的和。
输入
第一行为n(n<50),表示数塔的层数
从第2行至n+1行,每行有若干个数据,表示数塔中的数值。
输出
最大的路径值。
**样例输入**
5
13
11 8
12 7 26
6 14 15 8
12 7 13 24 11
**样例输出**
86
【算法分析】
【算法实现】
#include<iostream>
#include<cstdio>
using namespace std;
int tri[101][101];
int triangle(int n)
{
int i,j;
for(i=n-2;i>=0;i--)
for(j=0;j<=i;j++)
{
if(tri[i+1][j]>tri[i+1][j+1])
tri[i][j]+=tri[i+1][j];
else
tri[i][j]+=tri[i+1][j+1];
}
return tri[0][0];
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<=i;j++)
{
cin>>tri[i][j];
}
cout<<triangle(n);
return 0;
}