劍指offer10—青蛙跳臺階
阿新 • • 發佈:2021-01-31
技術標籤:c++
題目描述:一隻青蛙一次可以跳上1級臺階,也可以跳上2級臺階。求該青蛙跳上一個 n 級的臺階總共有多少種跳法。
答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。
示例 1:
輸入:n = 2
輸出:2
示例 2:
輸入:n = 7
輸出:21
示例 3:
輸入:n = 0
輸出:1
提示:
0 <= n <= 100
解題思路
你寫出來幾級臺階並且列出對應的跳法數量之後:
你就會發現這就是簡單的一個斐波那契數列,所以就直接看程式碼:
class Solution {
public:
int numWays(int n) {
if (n==0||n==1)
return 1;//你可以再加一句如果他<0返回-1使之更嚴密,當然也可以不加
int a=1,b=1,sum=0;
for(int i=2;i<=n;++i)
{
sum=(a+b)%1000000007;//這塊取模是題目要求,至於具體為什麼得去百度我就不在這贅述了
a=b;
b=sum;
}
return sum;
}
};
就這麼簡單,隨後我再發一道“變態跳臺階”,大家可以跟我一起看看都多“變態”