问题描述:
假设你正在爬楼梯。需要 n 步你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意: 给定 n
是一个正整数。
问题分析:
经典动态规划题目,正着爬,倒着分析,要想达到第n
个台阶,有几种情况?很显然,只能从第n-1
个台阶爬 1 步
达到,或者从第n-2
个台阶一下子爬 2 步
达到,所以很简单就得出状态转移公式。
f(1) = 1
f(2) = 2
f(n) = f(n-1) + f(n-2)
Python3实现:
class Solution:
def climbStairs(self, n):
if n < 3:return n
f1, f2 = 2, 1
for i in range(3, n+1):
cur = f2+f1
f2 = f1
f1 = cur
return cur
if __name__ == '__main__':
solu = Solution()
print(solu.climbStairs(4))
欢迎指正哦。
题目连接:70. 爬楼梯