描述
在一个古老的人类遗迹里面,发现一个神殿,只有解决了神殿大门上的三角形谜题才能进入,有一个数字组成的三角形,从三角形顶部往下走,只能往左下或右下走,求走到最下面时所经过的数字和最大为多少?(下图为n=5时的情况)
输入描述
第1行:整数n(1≤n≤1000)
第2-n+1行:每行若干整数,第i行有i-1个整数,空格分隔。
输出描述
一行:一个整数,表示所经过数字的最大和。
样例输入 1
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
样例输出 1
30
#include<bits/stdc++.h>
using namespace std;
long long a[1001][1001];
long long max1=0;
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cin>>a[i][j];
a[i][j]+=max(a[i-1][j],a[i-1][j-1]);
}
}
for(int j=1;j<=n;j++){
max1=max(max1,a[n][j]);
}
cout<<max1;
return 0;
}