题目来源:http://ac.jobdu.com/problem.php?pid=1205
-
题目描述:
-
N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)
-
输入:
-
输入包括一个整数N,(1<=N<90)。
-
输出:
-
可能有多组测试数据,对于每组数据,
输出当楼梯阶数是N时的上楼方式个数。
-
样例输入:
-
4
-
样例输出:
-
5
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//f[n] = f[n-1] + f[n+2];
const int MAXN = 100;
long long a[MAXN];
void Pre_Solve()
{
int i;
a[0] = 0;
a[1] = 1;
a[2] = 2;
for(i = 3; i < MAXN; ++i)
a[i] = a[i-1] + a[i-2];
}
int main()
{
int n;
Pre_Solve();
while(~scanf("%d", &n))
{
printf("%lld\n", a[n]);
}
return 0;
}