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

5 算法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;
}

 

 

相关文章:

  • springcloud springboot区别
  • pyside6学习专栏(七):自定义QTableWidget的扩展子类QTableWidgetEx
  • docker下安装 es 设置账号密码
  • Android 串口通信
  • 在arm64设备(树莓派4B)上部署Hyperledger Fabric V2.5
  • 详解 为什么 tcp 会出现 粘包 拆包 问题
  • AI知识架构之AI大模型
  • 前端PDF转图片技术调研实战指南:从踩坑到高可用方案的深度解析
  • Qt 中的线程池QRunnable和QThreadPool
  • 【Python爬虫(46)】解锁分布式爬虫:实时数据处理的奥秘
  • 蓝桥杯 Java B 组之背包问题、最长递增子序列(LIS)
  • ROS2 中 TF 变换发布与订阅:实现 base_link 和 test_link 实时可视化显示
  • 认知重构 | 自我分化 | 苏格拉底式提问
  • ubuntu磁盘挂载
  • go语言闭包的立即执行和不立即执行
  • centOS 7.9 安装JDK MYSQL
  • git,bash - 从一个远端git库只下载一个文件的方法
  • echarts找不到了?echarts社区最新地址
  • comfy UI节点缺失dlib库处理
  • vue中v-if和v-for优先级
  • 合肥网页设计培训机构/昆山优化外包
  • 天河做网站服务/凡科网小程序
  • 网站客户服务方案/seo博客网址
  • 国外源代码下载网站/google浏览器官网
  • 有什么网站可以做编程题/一个新手怎么去运营淘宝店铺
  • 一站式网络营销/站长工具传媒