【题目描述】
楼梯有n(0<n<71)阶台阶,上楼时可以一步上11阶,也可以一步上22阶,也可以一步上33阶,编程计算共有多少种不同的走法。
【输入】
输入的每一行包括一组测试数据,即为台阶数n。最后一行为00,表示测试结束。
【输出】
每一行输出对应一行输入的结果,即为走法的数目。
【输入样例】
1
2
3
4
0
【输出样例】
1
2
4
7
思路:
简单的递推算法,根据表述列出测试数据的走法,得出1、2、4、7、13多往后写例几个数据规律很明显,前三项为边界,7等于前三项和,13等于他前面三个的和,得到递推关系式即可。(因为本题没有模运算,最后推出的数据可能会很大,我们最开始就要避免数据溢出的情况开个long long)。
#include<iostream>
using namespace std;
#define int long long
const int N = 110;
int f[N];
signed main()
{
//边界
f[1] = 1, f[2] = 2, f[3] = 4;
for (int i = 4; i <= 70; i++)
{
//递推关系式
f[i] = f[i - 1] + f[i - 2] + f[i - 3];
}
int n;
//本题循环输入
while (cin >> n && n != 0) {
//离现处理
cout << f[n] << endl;
}
return 0;
}