题目描述
N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)
输入描述:
输入包括一个整数N,(1<=N<90)。
输出描述:
可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数。
示例1
输入
4
输出
5
非递归算法,实际上是动态规划,斐波拉契数列;
走到第n阶时可能是从第n-1阶走一步到的,也可能是从n-2阶走两阶到的,设F(n)为走到n阶的种数,则F(n)=F(n-1)+F(n-2).
#include <iostream>
using namespace std;
int main()
{
int n;
while (cin >> n) {
int f[100];
for (int i = 0; i <= 2; i++) {
f[i] = i;
}
for (int i = 3; i <= n; i++)
f[i] = f[i - 1] + f[i - 2];
cout << f[n] << endl;
}
return 0;
}