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

3154. 到达第 K 级台阶的方案数(24.8.20)

今天发晚了,嘿嘿,玩黑神话玩的

题目

给你有一个 非负 整数 k 。有一个无限长度的台阶,最低 一层编号为 0 。

Alice 有一个整数 jump ,一开始值为 0 。Alice 从台阶 1 开始,可以使用 任意 次操作,目标是到达第 k 级台阶。假设 Alice 位于台阶 i ,一次 操作 中,Alice 可以:

向下走一级到 i - 1 ,但该操作 不能 连续使用,如果在台阶第 0 级也不能使用。
向上走到台阶 i + 2jump 处,然后 jump 变为 jump + 1 。
请你返回 Alice 到达台阶 k 处的总方案数。

注意,Alice 可能到达台阶 k 处后,通过一些操作重新回到台阶 k 处,这视为不同的方案。

示例 1:

输入:k = 0
输出:2
解释:
2 种到达台阶 0 的方案为:

  • Alice 从台阶 1 开始。
    - 执行第一种操作,从台阶 1 向下走到台阶 0 。
  • Alice 从台阶 1 开始。
    • 执行第一种操作,从台阶 1 向下走到台阶 0 。
    • 执行第二种操作,向上走 20 级台阶到台阶 1 。
    • 执行第一种操作,从台阶 1 向下走到台阶 0 。

示例 2:
输入:k = 1
输出:4
解释:
4 种到达台阶 1 的方案为:

  • Alice 从台阶 1 开始,已经到达台阶 1 。

  • Alice 从台阶 1 开始。

    • 执行第一种操作,从台阶 1 向下走到台阶 0 。
    • 执行第二种操作,向上走 20 级台阶到台阶 1 。
  • Alice 从台阶 1 开始。

    • 执行第二种操作,向上走 20 级台阶到台阶 2 。
    • 执行第一种操作,向下走 1 级台阶到台阶 1 。
  • Alice 从台阶 1 开始。

    • 执行第一种操作,从台阶 1 向下走到台阶 0 。
    • 执行第二种操作,向上走 20 级台阶到台阶 1 。
    • 执行第一种操作,向下走 1 级台阶到台阶 0 。
    • 执行第二种操作,向上走 21 级台阶到台阶 2 。
    • 执行第一种操作,向下走 1 级台阶到台阶 1 。

提示:

0 <= k <= 109

解题思路

到达 i 的台阶可以的方式是:1. 本身就在 i 处  --   12. 通过 上升 得到   3. 通过 下降 得到4. 先上升 后下降5. 先下降 后上升
其实可以简化为:1. 本身就在 i 处  --   12. 先上升了(先假设为 a ) 2^0+2^1+2^2+...+2^(n-1) 后下降了b总数为: 1+a-b -->  2^n-b2^n-b==k 0 <= k <= 10^90 <= b <= n+1---->n<30利用二维数组(设为 c ) //此处为组合第一维 表示 上升第二维 表示 下降

代码

class Solution {
public:int waysToReachStair(int k) {const int MAXS=31;int c[MAXS][MAXS]={};for(int i=0;i<MAXS;i++){c[i][0]=c[i][i]=1;for(int j=1;j<i;j++){c[i][j]=c[i-1][j-1]+c[i-1][j];}}int ans=0;for(int n=0;n<MAXS-1;n++){int b=(1<<n)-k;if(b>=0&&b<=n+1){ans+=c[n+1][b];}}return ans;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++ | Leetcode C++题解之第343题整数拆分
  • 学分绩点预警系统设计与实现(源码+lw+部署文档+讲解等)
  • Java--SpringBoot工厂模式
  • R 语言学习教程,从入门到精通,R 数据重塑(15)
  • 设计模式在芯片验证中的应用——状态
  • VS Code开发C#(.NET)之快速入门
  • 大数据技术——实战项目:广告数仓(第八部分)FineBI实战
  • C语言 ——— 学习并使用malloc和free函数
  • OSI七层网络模型 /TCP/IP五层模型以及封装分用的详细讲解
  • 最近网友问晚上失眠的问题
  • 【vue3|第22期】Vite + Vue3:vite配置文件
  • 重磅!2023中国高校计算机大赛-人工智能创意赛结果出炉
  • 声明式事务及编程式事务
  • 数据在内存中的存储(了解大小端字节序浮点数在内存中存储)详细~
  • zabbix实战-磁盘空间告警
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • IDEA常用插件整理
  • Java 最常见的 200+ 面试题:面试必备
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Java应用性能调优
  • js如何打印object对象
  • JS题目及答案整理
  • nginx 配置多 域名 + 多 https
  • opencv python Meanshift 和 Camshift
  • select2 取值 遍历 设置默认值
  • sublime配置文件
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 跨域
  • 码农张的Bug人生 - 初来乍到
  • 前端技术周刊 2019-01-14:客户端存储
  • 移动端唤起键盘时取消position:fixed定位
  • NLPIR智能语义技术让大数据挖掘更简单
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • #Linux(make工具和makefile文件以及makefile语法)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (152)时序收敛--->(02)时序收敛二
  • (35)远程识别(又称无人机识别)(二)
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (分类)KNN算法- 参数调优
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (七)Knockout 创建自定义绑定
  • (算法)求1到1亿间的质数或素数
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (杂交版)植物大战僵尸
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (轉貼) UML中文FAQ (OO) (UML)
  • (自用)交互协议设计——protobuf序列化
  • .NET C# 操作Neo4j图数据库