動態規劃(3)爬樓梯

2021-10-07 16:59:20 字數 962 閱讀 4029

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?

注意:給定 n 是乙個正整數。

示例 1:

輸入: 2

輸出: 2

解釋: 有兩種方法可以爬到樓頂。

1 階 + 1 階

2 階

示例 2:

輸入: 3

輸出: 3

解釋: 有三種方法可以爬到樓頂。

3. 1 階 + 1 階 + 1 階

4. 1 階 + 2 階

5. 2 階 + 1 階

邏輯分析:

1.子問題

在本問題中,設f(x)為到達x階樓梯的方法數。因為每次只能上公升一階或兩階樓梯,所以f(n)與f(n - 1)和f(n - 2)有關:

2.轉移方程

對於階數n來說,根據上述分析其方法數f(n) = f(n - 1) + f(n - 2)

python

class

solution

:def

climbstairs

(self, n:

int)

->

int:

dp =

[none]*

(n +1)

dp[0]

=1dp[1]

=1for i in

range(2

,n +1)

: dp[i]

= dp[i -1]

+ dp[i -2]

return dp[n]

c++

class

solution

return dp[n]

;delete dp;}}

;

動態規劃 爬樓梯

假設你正在爬樓梯,需要n步你才能到達頂部。但每次你只能爬一步或者兩步,你能有多少種不同的方法爬到樓頂部?比如n 3,1 1 1 1 2 2 1 3,共有3種不同的方法 返回 3 解題思路 沒接觸過動態規劃的時候,我用排列組合做的,在我這篇部落格中 可以看一下。實際上,這個題目就是乙個斐波那契數列,這...

爬樓梯 動態規劃

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1.1 階 1 階 2.2 階 示例 2 輸入 3 輸出 3 解釋 有三種方法可以爬到樓頂。1...

動態規劃 爬樓梯

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1.1 階 1 階 2.2 階 示例 2 輸入 3 輸出 3 解釋 有三種方法可以爬到樓頂。1...