【TFLSnoi李志帅】第⑤篇文章--递推算法经典例题

制作着实不易,不喜勿喷,欢迎点赞(嘿嘿嘿

1190:上台阶


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 23566     通过数: 6903

【题目描述】

楼梯有n(71>n>0)阶台阶,上楼时可以一步上1阶,也可以一步上2阶,也可以一步上3阶,编程计算共有多少种不同的走法。

【输入】

输入的每一行包括一组测试数据,即为台阶数n。最后一行为0,表示测试结束。

【输出】

每一行输出对应一行输入的结果,即为走法的数目。

【输入样例】

1
2
3
4
0

【输出样例】

1
2
4
7

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

满分代码

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     long long n,a[76],i=1;//本题数据范围超出int,要用long long
 6     a[1]=1;a[2]=2;a[3]=4;//求出递推边界
 7     while (n)
 8     {
 9         
10         cin>>n;
11         if(n==0)break;
12         for(int j=4;j<=n;j++)
13         {
14             a[j]=a[j-1]+a[j-2]+a[j-3];//由于第n级楼梯可以由第n-1,n-2,n-级楼梯一步跨上,所以第到达n级楼梯的方法为到达第n-1,n-2,n-3级楼梯的方法数之和
//得出递推式为:f(n)=f(n-1)+f(n-2)+f(n-3) 当n=4时,f(n)=4+2+1=7,以此类推
15 } 16 cout<<a[n]<<endl; 17 } 18 return 0; 19 }
原文地址:https://www.cnblogs.com/TFLSc1908lzs/p/13530947.html