以所经过的权值之和最大值为例进行说明。

行进的过程中,每次只有两种选择:向左或向右。一个有n层的数字三角形的完整路径有2n条,所以当n比较大的时候,搜索全部路径,从中找出最大值,效率较低。

采用动态规划方法实现。

d(i,j)表示从位置(i,j)出发时得到的最大值(包括位置(i,j)本身),可以写出最大值的递归方程:

由于递归方程中包含了重复子问题,直接采用递归方程求解, 效率较低。采用动态规划的方法,用一张二维表记录中间过程的值,可以把时间效率提高到n2。

#include<stdio.h>
#define N 100
#include<string.h>
int MAXSUM(int a[][N],int n,int x[])
{int i,j,t;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];t=a[i+1][j];   //用于记录路径}else{     //右边分支大a[i][j]+=a[i+1][j+1];  t=a[i+1][j+1];     //用于记录路径}}x[i]=t;}return a[1][1];    //一直累加到顶端
}void main()
{int i,j,n,first;int a[N][N],x[N];printf("需要输入多少层的三角形?\n");scanf("%d",&n);printf("开始输入数字三角形数据:\n");for(i=1;i<=n;i++){for(j=1;j<=i;j++){scanf("%d",&a[i][j]);}}first=a[1][1];printf("第一层到最后一条路经过的权值最大值为: %d\n",MAXSUM(a,n,x));printf("所经过的路径是:\n");printf("%d->",first);for(i=1;i<=n-2;i++){printf("%d->",x[i]-x[i+1]);}printf("%d\n",x[n-1]);getchar();
}

三角形矩阵最大路径 行走方式只有左右两种方式   如果把问题看出二叉树 那么问题就看得明白了

把我输入的值  做为例子所讲

不管几层原理都一样  选择了较大的 只能一路走下去

数字三角形 计算最大路径 动态规划相关推荐

  1. 数字三角形求最大路径

    /**问题描述] 上图给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径. 对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最 大的和.路径上的每一步只能从一个数走到下一层 ...

  2. linux中倒三角的代码,数字三角形(递归、动态规划)

    题目描述: 计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大(每个数字可以选择往左下或者右下方向,例如下图中的"3"可以选择数字"8"或者" ...

  3. 【动态规划】数字三角形c语言

    本学期的的算法实践课的实验作业.写的不好请大家多多指教. [题目] 试设计一个算法,计算出从三角形的顶到底的一条路径,使该路径经过的数字总和最大. 数据输入: 由文件input.txt提供输入数据.文 ...

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

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

  5. 数字三角形路径最小值c语言题目,算法学习——动态规划之点数值三角形的最小路径...

    算法描述在一个n行的点数值三角形中,寻找从顶点开始每一步可沿着左斜或者右斜向下直到到达底端,使得每个点上的数值之和为最小 右图为一个4行的点数值三角形 算法思路接收用户输入行数n 使用一个二维数组a[ ...

  6. C++数字三角形问题(动态规划)

    一.问题描述 ★问题描述:给字一个由n行数字组成的数字三角形(等腰三角形).试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. ★算法设计:对于给定的由n行数字组成的数字三 ...

  7. 经典算法——数字三角形的三种解题方法:递推、记忆化搜索、动态规划

    上题目链接: http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/1730.html  递推方法: i ...

  8. 数字三角形问题(动态规划)

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

  9. 用java解决数字三角形问题(动态规划)

    问题描述:试设计一个算法,计算出从三角形的顶到底的一条路径,使该路径经过的数字总和最大,输出最大值和具体路径. 算法构思:采用动态规划的方法自底向上求解较大值,并将每次求的的值保存到一个二维数组中,该 ...

最新文章

  1. 阿里云服务器问题攻略
  2. xcode 4.3 调试的时候显示汇编,怎么办
  3. php调用shell脚本安全,从PHP调用的shell脚本问题
  4. python 0基础起步学习day2
  5. 微软推出了一款能帮你“做题”的数学应用
  6. 快乐的Linux命令行--读书笔记1
  7. 早上起床后喝的第一杯水不要喝太多
  8. C# RangeHelper
  9. 如何在Mac上创建和引导Linux USB驱动器
  10. icmp数据包BE、LE解释
  11. 天翎开源,是一种技术,更是一种信仰
  12. MOOC大奖赛现场统分(10分)
  13. w ndows键盘哪个键,B.O.W航世的蓝牙键盘的BackSpace键失灵怎么办?Windows修改键盘映射帮到你。...
  14. oracle按年同比环比,oracle中sum和case when的结合使用(求同比和环比)
  15. 大数据云计算支撑公安工作跨越发展
  16. 使用华为手机怎么从网上打印资料?
  17. 切蛋糕(洛谷P1714)
  18. 【leetcode刷题】73.商品折扣后的最终价格——Java版
  19. 自己动手搞个印象笔记桌面版
  20. ws832设置虚拟服务器,华为WS832路由器

热门文章

  1. cadence PCB边框(Outline)加倒角
  2. Excel常用公式大全
  3. 中介者模式(Java)
  4. 商标图形也会侵权?商标侵权如何界定
  5. linux配置文件如何排序,Linux系统中sort排序命令的使用教程
  6. 《缠中说禅108课》66:主力资金的食物链
  7. 电信宽带100M,平时只有30一40M而且常常掉线这是怎么回事?
  8. eclipse安装与配置maven插件
  9. C++实现批量文件重命名
  10. 破解excel格式保护