算法

来源:互联网 发布:山东财经大学网络教学 编辑:程序博客网 时间:2024/05/22 02:26
 

数字三角形问题
描述:给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。

编程任务:对于给定的由n 行数字组成的数字三角形,编程计算从三角形的顶至底的路径经过的数字和的最大值。

输入:输入数据的第1 行是数字三角形的行数n,1<=n<=100。接下来n行是数字三角形各行中的数字。所有数字在0..99之间。

 

输出:程序运行结束时,将计算结果输出。第1 行中的数是计算出的最大值。

样例输入

 

573 88 02 44 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;}