题目在这:https://leetcode-cn.com/problems/climbing-stairs/
思路分析:
这是一道典型的动态规划基础题。
简单分析一下找到递推公式。
当有1节台阶,只有1种方法。
当有2节台阶,有2种方法。 两次1节和一次2节。
当有3节台阶的时候,我们可以从第1节迈到第三节,也可以从第2节迈到第3节,所以是1+2=3种方法。
同样 4节台阶的还是,是3节台阶和2节台阶的组合数相加 2+3=5种
划重点!!!
这里需要注意一个误区:我们要找的是迈到第三节的方法组合数,而不是迈的阶数。
也就是说,我们从平底(0节)迈了1步迈到1节,从1节迈了2步迈到3节,这里是一种方法。
所以这里是两种方法的相加:1+2=3。 不要理解成,从1节迈到3节 还要加1,这样是不对的。
所以递推公式,n = n-1 + n-2
完整代码:
整个过程中仅用到了 前一层和前两层的数据。
所以进一步压缩状态:
完整代码: