Leetcode練習 十六 爬樓梯與斐波那契數列

2021-08-02 16:10:32 字數 1148 閱讀 9785

# 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...