首页 > 代码库 > 计蒜客--爬楼梯 (动态规划)

计蒜客--爬楼梯 (动态规划)

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

输入格式

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

输出格式

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

样例输入

5

样例输出

8

题解:动态规划 实际上是斐波那契
 1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cstdio> 5 #include <vector> 6 #include <cstdlib> 7 #include <iomanip> 8 #include <cmath> 9 #include <ctime>10 #include <map>11 #include <set>12 #include <queue>13 using namespace std;14 #define lowbit(x) (x&(-x))15 #define max(x,y) (x>y?x:y)16 #define min(x,y) (x<y?x:y)17 #define MAX 10000000000000000018 #define MOD 100000000719 #define pi acos(-1.0)20 #define ei exp(1)21 #define PI 3.14159265358979323846222 #define INF 0x3f3f3f3f3f23 #define mem(a) (memset(a,0,sizeof(a)))24 typedef long long ll;25 ll gcd(ll a,ll b){26     return b?gcd(b,a%b):a;27 }28 bool cmp(int x,int y)29 {30     return x>y;31 }32 const int N=10005;33 const int mod=1e9+7;34 ll a[50];35 void init()36 {37     a[1]=1,a[2]=2;38     for(int i=3;i<=50;i++){39         a[i]=a[i-1]+a[i-2];40     }41 }42 int main()43 {44     std::ios::sync_with_stdio(false);45     int n;46     init();47     while(cin>>n){48         cout<<a[n]<<endl;49     }50     return 0;51 }

计蒜客--爬楼梯 (动态规划)