题目描述
请编一个程序根据展示出的三角形,计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大。
每一步可沿左斜线向下或右斜线向下走;
三角形行数小于等于100;
三角形中的数字为整数;
输入描述
第一行为N,表示有N行
后面N行表示三角形每条路的路径权,每个路径权不超过10^5大小。
输出描述
路径所经过的数字的总和最大的答案
样例
输入
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
输出
30
代码
#include <iostream>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std;
long long n,a[105][105],v[105][105];
int main() {
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cin>>a[i][j];
}
}
v[1][1]=a[1][1];
for(int i=2;i<=n;i++){
for(int j=1;j<=i;j++){
v[i][j]=max(v[i-1][j],v[i-1][j-1])+a[i][j];
}
}
long long maxx=0;
for(int i=1;i<=n;i++){
maxx=max(maxx,v[n][i]);
}
cout<<maxx;
return 0;
}
635

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



