問題描述:
假設你正在爬樓梯。需要 n 步你才能到達樓頂。
每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?
注意:給定 n 是乙個正整數。
示例 1:
輸入: 2示例 2:輸出: 2
解釋: 有兩種方法可以爬到樓頂。
1. 1 步 + 1 步
2. 2 步
輸入: 3思路:如果要爬到第i層台階,因為每次只能爬1層台階或者2層台階,所以說只能是從第i-1層台階或者第i-2層台階到達第i層,所以到達第i層台階的方法總數就是到達第i-1層的方法總數加上到達第i-2層的方法總數。這就是為什麼爬樓梯問題也是屬於動態規劃演算法的原因,爬第i層樓梯的方法數隻計算一次,然後進行儲存,以備直接利用進行計算。輸出: 3
解釋: 有三種方法可以爬到樓頂。
1. 1 步 + 1 步 + 1 步
2. 1 步 + 2 步
3. 2 步 + 1 步
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...