一、基本概念
1.1引例
楼梯问题
动态规划主要用来解决多阶段决策问题,若问题可干个互相联系的阶段,我们就可以把问题拆解成前面阶段的总结。接下来我来举一个经典的例子,看看你是否能进入红雷老师的少年班吧。《少年班》细节解析:王大法用龟壳解题,现实中可能实现吗?_哔哩哔哩_bilibili,问:一楼梯共20级台阶,每次只能走一级或两级,共有多少种走法?
为了解决这个问题,我们可以使用动态规划的方法。我们定义一个数组dp
,其中dp[i]
表示走到第i
级台阶有多少种走法。第1级台阶有1种方法,第2级2种;对于i > 2
的台阶,可以从i-1
级台阶走1级上来,或从i-2
级台阶走2级上来,走到第i
级台阶的走法数就是走到第i-1
级和第i-2
级台阶的走法数之和。即:dp[i]=dp[i−1]+dp[i−2]
int