栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

问题描述:

【题目描述】
楼梯有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<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739363.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号