算法设计与分析报告4 实验四 动态规划
算法设计与分析报告4 实验四 动态规划
本文发布地址:
- https://cmd.dayi.ink/WNa3RGNaShmf_vPpUemWxA?both
- https://type.dayiyi.top/index.php/archives/237/
- https://blog.dayi.ink/?p=82
- https://www.cnblogs.com/rabbit-dayi/p/17816598.html
1.爬楼梯问题
- 小明住在 N 层楼梯之上,然后他可以一次 一脚 1 个台阶,一脚 2 个台阶,问总共多少种方法。
- 一个楼梯共有 n 级台阶,每次可以走一级或者两级,问从第 0 级台阶走到第 n 级台阶一共有多少种方案。
状态表示:
f[i]
表示0->i
个台阶有多少种方案
有限集合的值
属性:数值状态计算:
对于f[i]
的计算:- 对于第
i
层台阶- 我可以从
i-1
上一层到i
层 - 我可以从
i-2
上两层到i
层
- 我可以从
- 由于表示的是方案数:
f[i-1]
表示从0->i-1
层的方案数f[i-2]
表示从0->i-2
层的方案数
- 而
f[i]
的方案数是:- 上一层的方案数(也就是从
f[i-1]
过来) - 上两层的方案数(也就是从
f[i-2]
过来)
- 上一层的方案数(也就是从
- 对于第
由状态可以推出状态转移方程
$f[i] = f[i-1]+f[i-2]$
可以写代码(对于 N 范围比较小)