【CSU-1587】解题报告(递推,水题)

原始题目

##1587: 爬楼梯 - Time Limit: 1 Sec
- Memory Limit: 128 Mb
- Submitted: 867
- Solved: 514
### Description 小时候我们都玩过爬楼梯的游戏:两人猜拳,赢了可向上爬一级,谁先到最高级则获胜。作为大学生,我们应该玩一个更有水平的游戏。 现在一个人要上n级楼梯,每一步可以选择上一级或者上两级,但是不能后退。求上这n级楼梯的方案数。

Input

第一行只有一个整数\(T(1 \le T \le 45)\),表示数据组数。 下面的T行每一行有一个整数$ n ( 1 n 45)$ ,表示有多少级楼梯。

Output

对于每一组数据输出一个整数s,表示方案数。

Sample Input

4
1
2
3
4

Sample Output

1
2
3
5

Hint

Source

国防科学技术大学第十八届银河之光文化节ACM程序设计竞赛初赛

题目大意

如题 # 解题思路 - 到第i级阶梯可由第i-1级阶梯爬一级或由第i-2级解题爬两层。

解题代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <cstdio>
#include <cstring>
#include <iostream>
#include <set>
#include <algorithm>
#include <queue>
#include <map>
#include <string>
#define eps 1e-8
#define INF 0x3f3f3f3f
#define rep(i,a,n) for(int i=a;i<n;i++)
#define per(i,a,n) for(int i=n-1;i>=a;i--)
using namespace std;
const int maxn=1e5+5;
typedef long long ll;
ll dp[maxn];
void solve(){
memset(dp,0,sizeof(dp));
dp[1]=1;
dp[2]=2;
rep(i,3,50){
dp[i]=dp[i-1]+dp[i-2];
}

}
using namespace std;
int main(){
int t;
solve();
while(cin>>t){
rep(i,0,t){
ll a;
cin>>a;
cout<<dp[a]<<endl;
}
}
}

收获与反思

暂无,水题