/************************************************************************
数塔问题
自顶向下,路径上数值和最大,输出最大值及路径
问题重述:对于给定的数塔,要求从顶部出发,找出一条走到底层的路径,
使路径上的数值和最大。
************************************************************************/
#include<iostream>
#define M 30
using namespace std;
int main(){
/*函数声明*/
void creat_tower(int a[M][M][3], int n);
void calculate_tower(int a[M][M][3], int n);
void route_tower(int a[M][M][3], int n);
int a[M][M][3],n; //n为数塔层数
/* a[M][M][1]代替原数塔数组
a[M][M][2]代替计算后的数塔数组
a[M][M][3]记录解路径 */
cout<<"请输入待创建数塔的层数(不超过30): ";
cin >> n;
cout <<endl<< "请输入数塔的各个元素:";
creat_tower(a, n); /*创建数塔*/
calculate_tower(a, n); /*计算数塔*/
cout << endl << "数塔的最大值为:" << a[1][1][2]; /*输出最大值*/
cout << endl<<"路径为:";
route_tow