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

3. 台阶问题

数楼梯

题目描述

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

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

输入格式

一个数字,楼梯数。

输出格式

输出走的方式总数。

样例 #1

样例输入 #1

4

样例输出 #1

5

提示

  • 对于 60 % 60\% 60% 的数据, N ≤ 50 N \leq 50 N50
  • 对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 5000 1 \le N \leq 5000 1N5000

解题思路:递推+高精度

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7; 
const int N = 100010;vector<vector<int>>a(5010);vector<int> add(vector<int>A,vector<int>B)
{if(A.size()<B.size())return add(B,A);int t=0; vector<int>sum;for(int i=0;i<a.size();i++){t+=A[i];if(i<B.size())t+=B[i];sum.push_back(t%10);t=t/10;}if(t)sum.push_back(t);return sum;
}vector<int> solve(int n)
{a[1]={1}; a[2]={2};for(int i=3;i<=n;i++){a[i]=add(a[i-1],a[i-2]);}return a[n];
}int main()
{int n; cin>>n;vector<int>ans=solve(n);for(int i=ans.size()-1;i>=0;i--)cout<<ans[i];return 0;
}

本题使用的模板:高精度加法

vector<int> add(vector<int> &A, vector<int> &B)  // C = A + B, A >= 0, B >= 0
{if (A.size() < B.size()) return add(B, A);vector<int> C;int t = 0;for (int i = 0; i < A.size(); i ++ ){t += A[i];if (i < B.size()) t += B[i];C.push_back(t % 10);t /= 10;}if (t) C.push_back(t);return C;
}
http://www.lryc.cn/news/308684.html

相关文章:

  • 推荐一个 Obsidian 的 ChatGPT 插件
  • aws的RDS数据库开启慢查询日志
  • 一文读懂 Python 值传递和引用传递
  • Linux进阶——系统安全,重要文件,加固系统的相关配置
  • C++三级专项 字符串逆序
  • 【iOS ARKit】ARWorldMap
  • 敏捷开发最佳实践:质量维度实践案例之软硬一体持续交付
  • PMP证书的含金量如何?
  • Linux 下安装Jupyter
  • docker 基础(二)
  • LeetCode 刷题 [C++] 第236题.二叉树的最近公共祖先
  • vue3+vite 项目的创建
  • Windows Server 2022 使用ApacheDS用户认证
  • 【Oracle】Oracle清理日志空间
  • 数据抽取平台pydatax介绍--实现和项目使用
  • 容易发生内存泄漏的八个场景,你都知道吗?
  • 掌握 Vue3 中的 setup 函数
  • BUUCTF AWD-Test1
  • 百亿诈骗案频出,欧科云链用“技术责任”拓宽Web3安全边界
  • 一个实时波形图的封装demo(QT)(qcustomplot)
  • Java进阶-反射
  • 力扣180 连续出现的数字
  • C++面试 -操作系统-架构能力:内存问题分析与性能优化
  • 基于springboot+vue的共享汽车管理系统(前后端分离)
  • All Roads Lead to Rome (30)
  • GO语言学习笔记(与Java的比较学习)(四)
  • 在实训云平台上配置云主机
  • 什么是隔离式栅极驱动器?
  • 蓝桥杯算法赛 第 6 场 小白入门赛 解题报告 | 珂学家 | 简单场 + 元宵节日快乐
  • 附加Numpy数组