n级阶梯,人一步只能上1~2级,求一共有几种走法?
B站上有这样一道题:
大厂算法很难!力扣经典算法解析,小白也能懂!_哔哩哔哩_bilibili数据结构和算法可以让程序员脱胎换骨,刷算法题可以帮助我们通过面试和笔试,找到梦寐以求的工作,进入一线大厂或者拿高薪。怎么刷题,案例结合代码来搞起来!https://www.bilibili.com/video/BV1Rq4y1476r
说的是求一个n级的阶梯,人每次一步只能上1~2级,问一共有几种走法?
这是Leetcode上的一道题,Up主的核心思路是使用路径搜索的递归算法,然后把每次的计算结果放在缓存里面。
如果从数学的角度分析一下,这其实是个组合问题。
我们把所有的步子作为一个集合S,这个问题就是从S里取出一步迈了2级(或1级)的情况的问题。假设迈一级的步子总数是k1,迈二级的步子总数是k2,则有
则步子总数t为
从t个步子里面取出k2个步子,作为一步2级的取法 ,剩下的步子都是一步1级,那么取法就是:
那么k2的范围怎么取呢?
k2不会超过n的一半,且可以存在全部是一步1级的情况;而且,由于每一个一步2级都可以拆分成两个一步1级,所以k2应该是连续的整数。即:
所以走法的总数就是
以n=5为例,走法总数
n级阶梯,人一步只能上1~2级,求一共有几种走法?相关推荐
- 有1000阶的台阶,一个人每次只能走一阶或两阶,用一个递归算法求出共有多少种走法。...
[分析]这是一典型的排列组合问题, 但若用排列组合来分析则演变为纯数学问题,则无法用递归的方法来解决.能使用递归的方法的模型的规律是问题的解决方法与问题的规模无关,因此可以先从数字的规律入手: 假设共 ...
- 编程题-有n步台阶一次只能上1步或2步共有多少种走法
问题: 有n步台阶,一次只能上1步或2步,请共有多少种走法,请使用编程实现. 编程题实现: 方法1-递归 //实现f(n):求n步台阶,一共有几种走法public int f(int n){if(n& ...
- 超级楼梯——有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法?
有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法? 现在给你一个正整数n(0<n<40),请你输出不同的走法数. 如n=2,则输出1(你只有一种走 ...
- 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?请编程实现。
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?请编程实现. 输入: 输入一个整数M(1<=M<=20),表示楼梯的级数. 输出: 输出不同走法 ...
- 题目3:一段楼梯共n级台阶,规定每一步只能跨一级或两级或三级。要等上第n级台阶共有几种走法?
题目3:一段楼梯共n级台阶,规定每一步只能跨一级或两级或三级.要等上第n级台阶共有几种走法? 斐波那契数列问题:递归或动态规划均可解此类问题.跳台阶是典型应用之一. 思路:我们先从最后开始考虑,因为规 ...
- 字节算法题--N阶台阶,每次走一步或两步,计算共有多少种走法,并将每种走法打印出来。
N阶台阶,每次走一步或两步,计算共有多少种走法,打印出每种走法. 一 走台阶算法(本质上是斐波那契数列)在面试中常会遇到,描述就如题目那样:总共100级台阶(任意级都行),小明每次可选择走1步.2步或 ...
- 【组合数学+动态规划】在如下8*6的矩阵中,请计算从A移动到B一共有____种走法。要求每次只能向上或向右移动一格,并且不能经过P。...
在如下8*6的矩阵中,请计算从A移动到B一共有__种走法.要求每次只能向上或向右移动一格,并且不能经过P. A:456 B:492 C:568 D:626 E:680 F:702 解析: ...
- 【面试题】N阶台阶,每次走一步或两步,计算共有多少种走法,并将每种走法打印出来。
题目重述:有N阶台阶,每次可以走一步也可以走两步,计算共有多少种走法,并将每种走法打印出来. 以下解法主要利用了二叉树和递归的解题思路. public class StepCompute {priva ...
- java一次能迈一级或两级台阶_有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完?...
有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完? 相关问题: (1)有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台 ...
最新文章
- RAC环境下的备份与恢复(四)
- Zxing二维码开源项目
- 正则表达式抓取文件内容中的http链接地址
- leetcode 135. 分发糖果
- 基于websocket的聊天实现逻辑(springboot)
- win7系统5分钟就会自动注销的解决教程
- 三屏版知识竞赛类软件的开发需求分析及技术构思
- java编写自动化脚本_java+selenium自动化脚本编写
- MATLAB-多目标线性规划问题
- Facebook高管:文字分享将枯竭 5年后或许全是视频
- redis在php下面的命令大全
- 基于esp32的物联网设计
- flutter报错-‘CachedNetworkImageProvider.load‘ has fewer positional arguments than those of overridden
- java web play_玩转Java Web应用开发:Play框架
- 魅族手机安装Google Play
- Altium Designer Pcb 快捷键
- EFR32 xG1x的bootloader被擦除
- sqlite如何创建数据库
- 模拟SPI进行TF卡操作+Fatfs文件系统移植
- 使用机器学习自动化半导体研究
热门文章
- 华为P30 Pro终极渲染图曝光:后置徕卡四摄颜值出众
- Promise【面试】
- apk、ipa包size优化晋级手段
- spark的java源码,Spark源码包的编译
- 嵌入式Linux入门10:编译管理Makefile
- Jsp 页面添加动态水印
- 【clickhouse】ClickHouse表引擎 MergeTree 索引与数据存储方式 一级索引 二级索引
- 【Flink】Flink 源码阅读笔记(20)- Flink 基于 Mailbox 的线程模型
- 【Flink】FLink SQL 如何使用嵌套格式的Schema
- 【Flink】Flink exactly-once 报错 Timeout expired after 60000 milliseconds while awaiting InitProducerId