题目链接:HDU 2041 超级楼梯
没思路。。。
【分析】
-
首先题目限制只能走一级或者两级, 所以逆向思考, 要到达第 n 级楼梯, 只有两种方式,从(n-1)级 或 (n-2)级到达的。
-
所以可以用递推的思想去想这题,假设有一个数组 s[n],那么
s[1] = 1(由于一开始就在第一级,只有一种方法)
s[2] = 1(只能从s[1]上去 没有其他方法)。
s[3] = s[1] + s[2](只能从第一级跨两步, 或者第二级跨一步)
s[4] = s[3] + s[2]
……
#include<iostream>
#include<algorithm>
#include<string>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>
using namespace std;
const int maxn = 45;
int a[maxn];
void init()
{
a[1] = 1;
a[2] = 1;
for(int i=3;i<=40;i++)
a[i] = a[i-1]+a[i-2];
}
int main()
{
init();
int t;
scanf("%d",&t);
int m;
while(t--)
{
scanf("%d",&m);
cout<<a[m]<<endl;
}
return 0;
}