算法
来源:互联网 发布:山东财经大学网络教学 编辑:程序博客网 时间:2024/05/22 02:26
数字三角形问题
描述:给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。
编程任务:对于给定的由n 行数字组成的数字三角形,编程计算从三角形的顶至底的路径经过的数字和的最大值。
输入:输入数据的第1 行是数字三角形的行数n,1<=n<=100。接下来n行是数字三角形各行中的数字。所有数字在0..99之间。
输出:程序运行结束时,将计算结果输出。第1 行中的数是计算出的最大值。
样例输入
573 88 1 02 7 4 44 5 2 6 5
样例输出
30
代码如下:
#include <iostream>using namespace std;const int M=100;int n;int a[M][M];int func(){ int i,j; for(i=n-1;i>=1;i--) for(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]; } return a[1][1];}int main(){ int i,j,max; cin>>n; for(i=1;i<=n;i++) for(j=1;j<=i;j++) cin>>a[i][j]; max=func(); cout<<max<<endl; return 0;}