爬楼梯(最简单的DP)

假设你现在正在爬楼梯,楼梯有 nn 级。每次你只能爬 11 级或者 22 级,那么你有多少种方法爬到楼梯的顶部?

输入格式

第一行输入一个整数 n(1\leq n \leq 50)n(1≤n≤50),代表楼梯的级数。

输出格式

输出爬到楼梯顶部的方法总数。

样例输入

5

样例输出

8

最简单的DP思想:

1.在前面一层楼梯的基础上+再走一步

2.在前面两层楼梯的基础上+再走两步

#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<map>
#include<vector>
#include<stack>
#include<queue>
#include<set>
#define mod 998244353;
#define Max 0x3f3f3f3f;
#define Min 0xc0c0c0c0;
#define mst(a) memset(a,0,sizeof(a))
#define f(i,a,b) for(int i=a;i<b;i++)
using namespace std;
typedef long long ll;
const int maxn=100005;
int dp[55];
int lt()
{
    dp[1]=1;
    dp[0]=1;
    for(int i=2;i<=51;i++)
    {
        dp[i]=dp[i-1]+dp[i-2];
    }
}
int main()
{
    ios::sync_with_stdio(false);
    int n;
    lt();
    while(cin>>n)
    {
        cout<<dp[n]<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq1013459920/article/details/82454454
今日推荐