一.题目:
爬一个n层的楼梯,每一次可以爬两层或者一层,请问到达楼梯顶部时一共有多少种走法?
二.解题思路:
很显然,这是一道很简单的动态规划题.dp[i]表示爬到第i层时的走法,有状态转移方程为
dp[i] = dp[i-1]+dp[i-2]
所以代码如下:
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n==1:
return 1
if n==2:
return 2
dp = [1 for i in range(n)]
dp[1] = 2
for i in range(2,n):
dp[i] = dp[i-1] +dp[i-2]
return dp[n-1]