問題1 跳臺階

題目描述

一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

輸入

多組測試樣例。每組測試樣例包含一個整數(shù)n。(1<=n<=100)

輸出

每組測試樣例輸出一行,表示青蛙跳上n級臺階的跳法數(shù)量,所得到的結(jié)果模1000000007

樣例輸入

3
4

樣例輸出

3
5

分析和解決

斐波拉契數(shù)列的變形應用,設跳上n階的跳法數(shù)量為f(n),分兩種情況
1.第一次跳一步,這時的跳法數(shù)量為剩下n-1級臺階的跳法數(shù)量,即f(n-1)
2第一次跳兩步,這時的跳法數(shù)量為剩下n-2級臺階的跳法數(shù)量,即f(n-2)
所以,f(n)=f(n-1)+f(n-2)

代碼

#include<iostream>
using namespace std;
const int mod=1e9+7; 
int main()
{
    int count[105];
    count[1]=1;
    count[2]=2;
    for(int i=3;i<101;i++){
        count[i]=(count[i-1]+count[i-2])%mod;
    }
    int n;
    while(cin>>n) cout<<count[n]<<endl;
 } 
  • 一只青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
    1.當n=1時,f(1)=1
    2.當n=2時,第一次可以跳1或者2步,f(2)=f(2-1)+1
    3.當n=3時,第一次可以跳1或者2或者3步,f(3)=f(3-1)+f(3-2)+1
    4.以此類推,f(n)=f(n-1)+f(n-2)+f(n-3)+...+f(n-(n-1))+1
    f(n-1)=f(n-2)+f(n-3)+...+f(n-(n-1))+1
    所以f(n)=2*f(n-1)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容