数塔问题

mac2022-06-30  71

试题描述

 

如图所示为一个数字三角形。请编一个程序计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大。只要求输出总和。

1.   一步可沿左斜线向下或右斜线向下走;

2.   三角形行数小于等于100;

3.   三角形中的数字为0,1,…,99;

 

    7    3 8   8 1 0  2 7 4 4 4 5 2 6 5

 

 

输入 输入数据共n+1行,第一行为三角形行数n,后面n行表三角形每一行的数字。 输出 输出结果总和。 输入示例 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 输出示例 30

 

#include <iostream> using namespace std; int main() { int a[101][101],n,sum=0; cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) cin>>a[i][j]; for(int i=n-1;i>=1;i--) { for(int j=i;j>=1;j--) { if(a[i+1][j+1]>=a[i+1][j]) a[i][j]+=a[i+1][j+1]; else a[i][j]+=a[i+1][j]; } } cout<<a[1][1]; } View Code

 

转载于:https://www.cnblogs.com/jason2003/p/6572386.html

最新回复(0)