動態規劃應用之爬樓梯

2021-08-19 02:39:57 字數 938 閱讀 8811

問題描述:

假設你正在爬樓梯。需要 n 步你才能到達樓頂。

每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?

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

示例 1:

輸入: 2

輸出: 2

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

1. 1 步 + 1 步

2. 2 步

示例 2:

輸入: 3

輸出: 3

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

1. 1 步 + 1 步 + 1 步

2. 1 步 + 2 步

3. 2 步 + 1 步

思路:如果要爬到第i層台階,因為每次只能爬1層台階或者2層台階,所以說只能是從第i-1層台階或者第i-2層台階到達第i層,所以到達第i層台階的方法總數就是到達第i-1層的方法總數加上到達第i-2層的方法總數。這就是為什麼爬樓梯問題也是屬於動態規劃演算法的原因,爬第i層樓梯的方法數隻計算一次,然後進行儲存,以備直接利用進行計算。

int climbstairs(int n) ;

a[0] = 0;//

a[1] = 1;//爬一層台階共有1種方法

a[2] = 2;//爬二層台階共有2種方法,1+1或者直接2

if (n > 1000)

return 0;

//因為每次只能是1步或者2步,所以怕第i層台階的方法總數

//就是爬第i-1層台階的方法數加上爬第i-2層台階的方法數

動態規劃 爬樓梯

假設你正在爬樓梯,需要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...