假设你现在正在爬楼梯,楼梯有 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;
}