漫画说算法--动态规划算法二(绝对通俗易懂,非常棒)
来源:互联网 发布:9.3越狱软件源 编辑:程序博客网 时间:2024/06/08 03:23
在上一篇漫画中,我们分析了一道动态规划相关的算法问题,并归纳出了问题的状态转移方程式。没看过上一篇的朋友可以点击下面的链接:
漫画说算法–动态规划算法一(绝对通俗易懂,非常棒)
首先,让我们简单回顾一下题目:
有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。
以动态规划的建模思路,我们归纳出的状态转移方程式如下:
F(1) = 1;
F(2) = 2;
F(n) = F(n-1)+F(n-2)(n>=3)
下面,继续我们的故事。
方法一:递归求解
由于代码比较简单,这里就不做过多解释了。
如图所示,相同的颜色代表了方法被传入相同的参数。
方法二:备忘录算法
在以上代码中,集合map是一个备忘录。当每次需要计算F(N)的时候,会首先从map中寻找匹配元素。如果map中存在,就直接返回结果,如果map中不存在,就计算出结果,存入备忘录中。
方法三:动态规划求解
程序从 i=3 开始迭代,一直到 i=n 结束。每一次迭代,都会计算出多一级台阶的走法数量。迭代过程中只需保留两个临时变量a和b,分别代表了上一次和上上次迭代的结果。 为了便于理解,我引入了temp变量。temp代表了当前迭代的结果值。
题目二: 国王和金矿
有一个国家发现了5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人数也不同,而工人的总数是1000人。要求用程序求解出,要想得到尽可能多的黄金,应该选择挖取哪几座金矿?
阅读全文
2 0
- 漫画说算法--动态规划算法二(绝对通俗易懂,非常棒)
- 漫画说算法--动态规划算法一(绝对通俗易懂,非常棒)
- 漫画说算法--动态规划算法三(绝对通俗易懂,非常棒)
- 漫画说动态规划
- 算法学习-(二)动态规划算法
- 二、动态规划算法
- 常用算法二(动态规划)
- 常用算法二(动态规划)
- 常用算法二(动态规划)
- 常用算法二(动态规划)
- 常用算法思想二(动态规划)
- 常用算法二(动态规划)
- 算法小结--动态规划(二)
- LeetCode练习-动态规划算法(二)
- 动态规划算法之二
- 五大经典算法(二)动态规划算法
- 【动态规划(二)】迪杰斯特拉算法与普里姆算法
- 非常通俗易懂的解释密码算法原理!
- C# 面向对象与常用API的学习
- hdu 4712 Hamming Distance
- zigbee如何设置重发次数
- 线程-Linux下的轻量级进程
- Ant脚本将web项目打war包、远程备份更新线上项目
- 漫画说算法--动态规划算法二(绝对通俗易懂,非常棒)
- POJ
- Java基础-files(2)
- Android7.0中文文档(API)--- ViewFlipper
- ios搜索(可实现模糊搜索 支持拼音检索 首字母等)
- IPC-信号量
- 面膜使用心得
- POJ2112_Optimal Milking_最大流解决匹配问题
- 详解应对平台高并发的分布式调度框架TBSchedule