一、问题描述
一个楼梯有20级,每次可以爬1级或2级,请问从底到顶一共有多少种方法?
二、分析思路
步骤1:用函数的形式来表示题目结果。
设f(x)=y,表示一个有x级的楼梯,从底到顶爬上去一共有y种方法。
本题要求的便是f(20)的结果。
步骤2:分析递推情况。
我们首先来分析第一次爬楼梯的情况。在第一次的时候,我们有2种选择即可以爬1级,也可以爬2级。
先分析第一种情况,如果选择了爬1级一共有多少种方法呢?
我们知道第一次爬1级,那么楼梯还剩下20- 1 = 19级,接下来其实就是要计算爬19级楼梯有多少种方法,而这个答案就是f(19),根据步骤1的f(x)函数的意义即可得出。
注:此处大家务必要了解f(x)函数的意义,爬x级楼梯有y种方法。
同理,如果选择了爬2级,则有f(20-2)即f(18)种方法。
我们将两种选择的结果加起来就可以得到f(20)的结果,即f(20)= f(19) + f(18),表示如果第一次选择了爬1级会有f(19)种方法,或第一次选择了爬2级会有f(18)种方法。
那么如何求f(19)和f(18)呢?这个问题相信大家已经知道答案了,思路和上述分析一样。
递推关系的分析是动态规划算法最为核心的地方,请大家务必掌握分析思路。
步骤3:算法实现。
后续讲解。
三、总结
本文给大家介绍了利用动态规划算法求解爬楼梯的问题,您掌握了吗?
如果您对算法或编程感兴趣,欢迎扫描下方二维码并关注公众号“算法与编程之美”,和您一起探索算法和编程的神秘之处,给您不一样的解题分析思路。