Problem J

简单题意

有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法

解题思路形成过程

感觉做过很多类似的题,就是变形的斐波那契数列,对于每层楼梯,可能是上一个状态走了两层到达的,也可能是走了一层上来的。

AC代码

#include<iostream>

#include<stdio.h>
#include<fstream>
using namespace std;
int main(){
    ifstream cin("in.txt");
    freopen("in.txt","r",stdin);
    int dp[45];
    dp[1]=1;
    dp[2]=1;
    for(int i=3;i<=40;i++){
        dp[i]=dp[i-1]+dp[i-2];
    }
    int n,m;
    cin>>n;
    while(n--){
        cin>>m;
        cout<<dp[m]<<endl;
    }
    return 0;
}

你可能感兴趣的:(dp)