欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

信息学奥赛一本通---1190:上台阶(递推)

时间:2023-05-28
问题描述:

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

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

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

【输入样例】
1
2
3
4
0
【输出样例】
1
2
4
7

题目分析:

此题的递推关系式比较好找,上楼时可以一步上1阶,也可以一步上2阶,也可以一步上3阶;故递推关系式为:f[i]=f[i-1]+f[i-2]+f[i-3];
且最终答案需要long long数组去保存,不然会造成答案错误,且初始化f[1]、f[2]、f[3]。且可以将输入最后解决,每次输入一个数,直接输出他的结果。

解决方案:

#include using namespace std;long long f[80];//int会爆int main() {int x;//临时变量//初始化f[1]=1;f[2]=2;f[3]=4;for(int i=4; i<=71; i++) {//向下递推f[i]=f[i-1]+f[i-2]+f[i-3];}while(cin>>x&&x!=0) {//边输入边输出cout<

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。