HDU 2041 超级楼梯 简单DP/斐波那契

超级楼梯 HDU - 2041

mm 级台阶,每次只能走一级或两级,问有几种走法?

dp[i]dp[i]ii 级台阶的走法数,则:

dp[i]=dp[i1]+dp[i2] dp[i]=dp[i-1]+dp[i-2]

且有 dp[1]=0,dp[2]=1,dp[3]=2dp[1]=0,dp[2]=1,dp[3]=2

代码如下:

#include<iostream>
#include<cstdio>
//define WINE
#define MAXN 45
using namespace std;
typedef long long ll;
int T,m;
ll dp[MAXN]={0,0,1,2};
int main(){
#ifdef WINE
    freopen("data.in","r",stdin);
#endif
    for(int i=4;i<MAXN;i++)
        dp[i]=dp[i-1]+dp[i-2];
    scanf("%d",&T);
    while(T--){
        scanf("%d",&m);
        printf("%lld\n",dp[m]);
    }
    return 0;
}

在这里插入图片描述

posted @ 2020-03-27 14:44  winechord  阅读(87)  评论(0编辑  收藏  举报