leetcode 70. 爬樓梯 C語言版
阿新 • • 發佈:2018-11-23
假設你正在爬樓梯。需要 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 階
這個題其實是斐波那契數列的問題。
第一級臺階有一種方法到達,第二級臺階有兩種方法到達。第三級臺階可以先走兩級到第一級,也可以走一級到第二級。
所以T(3)= T(2) + T(1);
所以程式碼為:
int climbStairs(int n) { int po1 = 1; int po2 = 2; int p; int i = 2; if(n == 1) return 1; if(n < 1) return 0; while(i < n) { p = po1 + po2; po1 = po2; po2 = p; i++; } return po2; }