【1190】上台阶

该博客讨论了如何使用递推算法解决一个数学问题:当楼梯有n阶台阶时,一步可以上1、2或3阶,求不同上楼方式的总数。通过递推公式,博主展示了对于输入的台阶数n,如何计算出对应的走法数量,并给出了输入样例和输出样例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【问题描述】
       楼梯有n(71>n>0)阶台阶,上楼时可以一步上1阶,也可以一步上2阶,也可以一步上3阶,编程计算共有多少种不同的走法。
【输入】
       输入的每一行包括一组测试数据,即为台阶数n。最后一行为0,表示测试结束。
【输出】
       每一行输出对应一行输入的结果,即为走法的数目。
【输入样例】
       1
       2
       3
       4
       0
【输出样例】
       1
       2
       4
       7
【参考程序】

#include <cstdio>
#include <iostream>
using namespace std;

long long a, f[71];			// a[i]表示上i阶台阶不同的走法("训练指导教程"P239源码是int,需要改为long long) 

int main() {
	f[1] = 1;
	f[2] = 2;
	f[3] = 4;				// 上4阶台阶共有4种方法
	
	for (int i=4; i<=70; i++) {
		f[i] = f[i-1] + f[i-2] + f[i-3];		// 加法原理(一步上1阶,剩余i-1阶有f[i-1]种不同走法,加上一步上2阶,剩余i-2阶有f[i-2]种不同走法,加上一步上3阶,剩余i-3阶有f[i-3]种不同走法) 
	}
	
	while (true) {
		cin >> a;
		if (a == 0) {
			break;
		} else {
			cout << f[a] << endl;
		}
	} 
	 
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值