动态规划
将大问题化为若干个小问题,通过小问题的最优解得到大问题的最优解,自底向上的解决问题
例子
斐波那契数列
斐波那契数列是经典的动态规划,这里不再过多介绍了
走楼梯问题
现共有n个阶梯,A想要从一楼走到二楼,因腿长的限制,她一步可以跨一个或两个阶梯,且只能向上走(即若A正在第x个阶梯上,它可以选择到第x+1或第x+2个阶梯),请问他有多少种方法可以上到实训二楼。
思路
按照动态规划的思想,首先建立递推关系;
定义a[i]为从第0个阶梯到第i个阶梯有多少种方法;
那么假如我们现在在第i个阶梯,a[i]之前的都已经有对应的答案值,如何用a[i]之前的表示a[i],即可以通过从[i-1]和[i-2]对应阶梯分别上1、2层便可到i,也就是:
a
[
i
]
=
a
[
i
−
1
]
a
[
i
−
2
]
a[i]=a[i-1]a[i-2]
a[i]=a[i−1]a[i−2]
接下来,定义初始值a[0]=a[1]=1;
然后递推计算就行了;