动态规划 数塔问题
Posted 亮星的信息学小屋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划 数塔问题相关的知识,希望对你有一定的参考价值。
今天开始进入到动态规划了!
题 目
设有一个三角形的数塔,顶点为根结点,每个结点有一个整数值。从顶点出发,可以向左走或向右走,请找出一条路径,使路径之和最大,只要输出路径的和。
解 析
这道题
是很经典的动态规划
有的同志可能会问
用别的方法不好吗
下面我给大家来看看
别的方法的
以下是大型翻车现场!!!
**(翻车现场1)深度优先搜索(穷举)**:
从根结点开始,将所有可能的路径求和,找出最大值。
N=1,P=1
N=2,P=2
N=3,P=4
……
N=K,P=2^(K-1)
例如:N=50,P=2^49=500万亿条路径!!!
算法复杂度:O(2^(N-1))
**(翻车现场2)深度优先搜索(递归)**:
**存在的问题**:出现重复子问题,需要解决重复计算问题。
**(翻车现场3)贪心算法**:
根据贪心算法
得出的解为:13-11-21
而实际上最优解应为:13-8-40。
贪心算法往往得不到最优解。
**不忍直视!!!
动态规划的题目
一般有两点
1、重复子问题
2、最优子结构
这道题完全符合以上两点
在输入的时候
是这样输入的:
13
11 8
12 7 26
6 14 15 8
12 7 13 24 11
从倒数第二行
往第一行推
每一行
从左到右推
每一个
都加等于这个数下面的值或右下角的值中大的那一个
算到最后
最上面的值就是最大的
最重要的动规方程:
b[n][i]=a[n][i],(i=1..n) //初始状态
b[i][j]=max{b[i+1][j],b[i+1][j+1]}+a[i][j]
下面附上代码
加油!
经典动态规划—数塔问题的代码
加油!
我的萌萌哒老妹!
加油
往期精彩推荐
某些图片来自互联网,如有侵权,请联系删除
欢迎关注
亮星的信息学小屋
亮星的信息学小屋
觉得有用,请点右下方“在看”,谢谢鼓励
以上是关于动态规划 数塔问题的主要内容,如果未能解决你的问题,请参考以下文章