Leetcode - 爬樓梯

https://leetcode-cn.com/problems/climbing-stairs/

題目描述

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

解題思路

因爲可以走一階,可以走兩階。用f[i]表示走到第i層的方法,走到第i階可以由第i-1層通過走一階到達,也可由第i-2層通過走兩階到達故f[1]=1,f[2]=2;f[i]=f[i-1]+f[i-2],i>2.

int climbStairs(int n) {
    int s[65] = {0, 1, 2};
    for (int i = 3; i < 55; i++)
        s[i] = s[i - 1] + s[i - 2];
    return s[n];
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章