数字三角形的最大路径之及路径
来源:互联网 发布:apache 压力测试 编辑:程序博客网 时间:2024/05/17 08:44
问题描述:
有一个形式如下的数字三角形:
7
3 8
8 1 0
2 7 7 4
4 5 2 6 5
从三角形顶点,沿左斜线方向或右斜线方向下降到三角形底边的路线是一条合法路径。
例如,图中用红色标出的路径就是合法的;我们可以将这条路径记为“LLRL”,它经过了7,3,8,7,5这5个数字,它们的和是30。
请编写一个程序,求解一条合法路径,使这条路径上经过的各数字的总和最大,并把这个最大的总和以及你的路径输出出来。如果路径不止一条,则优先选择向左走。
分析:
问题可以看成如下:
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
#include <iostream.h>#include <memory.h>#define Max 1001int N; //N为数字三角形的行数,定义为全局变量,减少调用函数的参数,int Num[Max][Max]; //各位置的数字int Record_Num[Max][Max]; //记录数字的变化 int Num_Triangle(int m,int n) //m表示行,n表示在m行的第n个数{ if(m==N) { return Num[m][n]; } if(Record_Num[m+1][n]==-1) //表示Record_Num[m+1][n]未计算过 Record_Num[m+1][n]=Num_Triangle(m+1,n); if(Record_Num[m+1][n+1]==-1) Record_Num[m+1][n+1]=Num_Triangle(m+1,n+1); if(Record_Num[m+1][n]>Record_Num[m+1][n+1]) return Record_Num[m+1][n]+Num[m][n]; else return Record_Num[m+1][n+1]+Num[m][n];}void path() //打印路径。思路是经过一轮数字三角形的扫描,{//数组Record_Num中各元素记录了从下往上走的最大路径之和,如Record_Num[2][1]表示结点Num[2][1]到三角形的底的路径之和int i,j;cout<<Num[1][1]<<" "; //打印第一个数字,即起点for(i=1,j=1;i<N;){if(Record_Num[i+1][j]>Record_Num[i+1][j+1]) //对比左右路径,谁大就打印相对应的结点,就走那边{cout<<Num[i+1][j]<<" ";i++;}else{cout<<Num[i+1][j+1]<<" ";i++;j++;}}cout<<endl;}void main(){cout<<"请先输入三角形的行数,换行(Enter键换行)后开始构造三角形:";cin>>N;memset(Record_Num,-1,sizeof(Record_Num)); //让数组Record_Num中的所有元素置为1;for(int i=1;i<=N;i++)for(int j=1;j<=i;j++)cin>>Num[i][j];cout<<"最大的路径总和为:"<<Num_Triangle(1,1)<<" "<<"该路径为:";path(); //打印路径,注意需要在Num_Triangle()调用之后才能用}
0 0
- 数字三角形的最大路径之及路径
- 算法学习之动态规划--数字三角形最大路径和
- EularProject 67: 三角形数字矩阵的最大路径
- 1730数字三角形问题(三角形内路径最大)
- 动态规划(二)暴力递归的优化之路——数字三角形最大路径和
- 数字三角形+路径输出
- EularProject 18: 三角形矩阵的最大路径
- 练习系统 实验三 数字三角形最大路径
- 【java】数字三角形最长路径
- 三角形数字路径最大值问题
- poj 1163 lightblueme 三角形的最大路径和
- 三角形的路径权
- 数字三角最大路径求法
- POJ1163—三角形矩阵最大路径
- 路径所经过的数字的最大的总和
- leetcode之Triangle(三角形的最短路径)
- 经典算法题:数字三角形寻找最大路径——动态规划和递归调用两种解法
- 动态规划之三角形路径求和
- 套餐完成这位向右的决财
- 蚁群算法的车间任务选择投放研究
- fgfdgdfd
- 【线段树+扫描线】 HDOJ 1828 && POJ 1177 Picture
- MySQL远端连接设置
- 数字三角形的最大路径之及路径
- NGUI之UIButton"禁用"状态时置灰
- Oracle之ORA-25150错误引发的思考
- 明何-大310算法学习小组成员募集
- 广东人个人个人个人股规划好好干
- Flask-SQLAlchemy 学习
- 一周北航么做,当戏以戳
- Java 内存整理——堆、栈、常量池
- vasdsa