当前位置: 首页 > article >正文

算法1-4 数楼梯

题目描述

楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。

编一个程序,计算共有多少种不同的走法。

输入格式

一个数字,楼梯数。

输出格式

输出走的方式总数。

输入输出样例

输入 #1

4

输出 #1

5

说明/提示

  • 对于 60% 的数据,N≤50;
  • 对于 100% 的数据,1≤N≤5000。走法数量过大,int、long long都装不下,要使用高精度

阶数  走法  构造斐波那契数列:从第三项开始,每一项等于前两项之和
0         1   a
1         1   b     a
2         2   c     b     a
3         3          c     b
4         5                 c

暴力写法:

#include<iostream>
using namespace std;

int n; 
int a, b, c; 

int main() 
{
	cin>>n;
	
	a = 1, b = 1;
	for(int i=2; i<=n; i++)
	{
		c = a + b;
		a = b;  //更新数据 
		b = c;
	}
	
	cout<<c; 
	
	return 0;
}

高精度:

#include<iostream>
using namespace std;

int n; 
int a[5010]={0, 1}, b[5010]={0, 1}; 
int c[5010]={0, 1}; //存储结果 阶数是1输出1 
int len = 1;

void f()
{
	int d = 0;
	for(int i=1; i<=len; i++)
	{
		c[i] = a[i] + b[i] + d;
		d = c[i]/10;
		c[i] %= 10;
	} 
	if(d>0)  
    {
    	len++;
    	c[len]=d;
	}
	
	//更新数据 
	for(int i=1; i<=len; i++)
	{
		a[i] = b[i];
		b[i] = c[i];
	}
}

int main() 
{
	cin>>n;
	
	for(int i=2; i<=n; i++)  //从第二阶开始 
	{
		f();
	}
	
	for(int i=len; i>=1; i--)  //逆序输出c中的数 
	{
		cout<<c[i];
	}
	
	return 0;
}


http://www.kler.cn/a/556095.html

相关文章:

  • C++栈与队列:数据结构的“单行道”与“流水线
  • k8s ssl 漏洞修复
  • 深入剖析 Vue 的计算属性与侦听属性:差异、应用及最佳实践
  • CDGA|企业数据治理实战:从疏通“信息河”到打造优质“数据湖”
  • TCP三次握手 四次挥手:一场“确认眼神”与“礼貌告别”的对话
  • DeepSeek 助力 Vue 开发:打造丝滑的缩略图列表(Thumbnail List)
  • 【数据库系统概论】第6章 (三)数据依赖的公理系统
  • 深度解析应用层协议-----HTTP与MQTT(涵盖Paho库)
  • 【UCB CS 61B SP24】Lecture 4 - Lists 2: SLLists学习笔记
  • Linux----线程
  • SpringBoot核心框架之AOP详解
  • 拆解微软CEO纳德拉战略蓝图:AI、量子计算、游戏革命如何改写未来规则!
  • 【WRF模拟】全过程总结:更换不同研究时段改动总结
  • 宝塔mysql8.0设置数据库区分大小写
  • 宝塔怎么搭建LiveHelperChat?PHP开源在线客服安装教程
  • Lua C API :lua_insert 函数详解
  • WPS携手DeepSeek:开启智能办公新时代
  • Linux基础开发工具的使用(apt、vim、gcc、g++、gdb、make、makefile)
  • 计算机网络面试知识点总结
  • 开源免费文档翻译工具 可支持pdf、word、excel、ppt