题目描述
楼梯有 NN 阶,上楼可以一步上一阶,也可以一步上二阶。
编一个程序,计算共有多少种不同的走法。
输入格式
一个数字,楼梯数。
输出格式
输出走的方式总数。
输入输出样例
输入 #1复制
4
输出 #1复制
5
说明/提示
- 对于 60\%60% 的数据,N \leq 50N≤50;
- 对于 100\%100% 的数据,N \leq 5000N≤5000。
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int Maxn = 5005;
int a[Maxn], b[Maxn], c[Maxn], lc = 1;
int main()
{
a[1] = 1;
b[1] = 2;
int n;
cin >> n;
if (n == 1)
cout << "1" << endl;
else if(n==2)
cout<< "2" << endl;
else
{
for (int i = 3; i <= n; i++)
{
memset(c, 0, sizeof(c));
for (int j = 1; j <= lc; j++)
{
c[j] += a[j] + b[j];
c[j + 1] += c[j] / 10;
c[j] %= 10;
}
if (c[lc + 1] > 0) lc++;
for (int j = 1; j <= lc; j++)
{
a[j] = b[j];
}
for (int j = 1; j <= lc; j++)
{
b[j] = c[j];
}
}
for (int i = lc; i >= 1; i--)
{
cout << c[i];
}
}
return 0;
}