# you are climbing a stair case. it takes n steps to reach to the top.# each time you can either climb 1 or 2 steps. in how many distinct
# ways can you climb to the top?
# note: given n will be a positive integer.
# 問題:爬樓梯, 有
n個台階
, 你可以選擇一步走乙個台階或兩個台階
, 計算一共可以有多少種爬樓梯的方法
# 是乙個遞迴問題
, 假設走
n個台階, 有
s(n)
中方法#
假設第一步走
1個台階
, 剩下還有
n-1個台階
, 即有
s(n-1)
種走法#
假設第一步走
2個台階
, 剩下還有
n-2個台階
, 即有
s(n-2)
種走法# 所以n
個台階,
一種有s(n) = s(n-1) + s(n-2)
種走法#
假設n = 3,
有第一步走乙個台階
s(3 - 1) --> (1, 1, 1)
或(1, 2)
第一步走兩個台階
s(3 - 2)(2, 1)
共三種走法
classsolution(object):
defclimbstairs(self
, n):
a, b = 1, 1
foriinrange(n):
a, b = b, a + b
returna
if__name__ == '__main__':
n = 4
s = solution()
print(s.climbstairs(n))
leetcode 爬樓梯問題
爬樓梯問題 每一次可以選擇爬1層或者爬2層。求爬n層樓梯有幾種選擇 1.動態規劃 爬n層樓梯的選擇為f n 那麼f n f n 1 f n 2 2.尾遞迴,比直接遞迴的好處是不需要記錄本次遞迴前的函式狀態,時間消耗少。public class climbstairs return dp n publ...
C 練習 LeetCode 70 爬樓梯
假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1 階 1 階 2 階示例 2 輸入 3 輸出 3 解釋 有三種方法可以爬到樓頂。1 階 1 ...
lintcode練習 111 爬樓梯
假設你正在爬樓梯,需要n步你才能到達頂部。但每次你只能爬一步或者兩步,你能有多少種不同的方法爬到樓頂部?比如n 3,1 1 1 1 2 2 1 3,共有3種不同的方法 返回 3 很經典的動態規劃問題,第一階只有1,第二階有1 1,2兩種,第三階就有 1,1,1 1,2 2,1三種,第四階有2 3 5...