【题目描述】
楼梯有n𝑛(0<n<710<𝑛<71)阶台阶,上楼时可以一步上11阶,也可以一步上22阶,也可以一步上33阶,编程计算共有多少种不同的走法。
【输入】
输入的每一行包括一组测试数据,即为台阶数n𝑛。最后一行为00,表示测试结束。
【输出】
每一行输出对应一行输入的结果,即为走法的数目。
【输入样例】
1
2
3
4
0
【输出样例】
1
2
4
7
【解题思路】
除了前三阶以外,每一阶都必须从前一阶或前两阶或前三阶上来,因此走到这一阶的步数便等于走到前一阶+走到前两阶+走到前三阶的步数,由此可知递推式为a[i] = a[i-1]+a[i-2]+a[i-3]。前三阶的步数分别为1,2,4。
【题解代码】
#include <bits/stdc++.h>
using namespace std;
int main(){
long long n,a[80];
a[1] = 1;a[2] = 2;a[3] = 4;
for (int i=4;i<=71;i++) a[i] = a[i-1]+a[i-2]+a[i-3];
while (cin >> n){
if (n == 0) return 0; //输入0就退出
cout << a[n] << endl;
}
return 0;
}