跳台阶

牛客网——跳台阶和变态跳台阶问题 1、跳台阶 题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种方法? 解答:这种问题一般是有规律的,跳1级台阶,只有1种方法;跳2级台阶,有2种方法;跳2级台阶,有3种方法;跳4级台阶,有5种方法,依次下去,跳一个n级的台阶的方法数是跳n-1级台阶的方法数与跳n-2阶台阶的方法数的总和。这种思路可以用逆推去想,要跳上一个n级台阶,可以从n-1 阅读详情
/**
 * 题目:
 * 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
 * */

/**
 * 理解题意:
 * a.两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1);
 * b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2)
 * c.由a\b假设可以得出总跳法为: f(n) = f(n-1) + f(n-2) 
 * d.然后通过实际的情况可以得出:只有一阶的时候 f(1) = 1 ,只有两阶的时候可以有 f(2) = 2
 * e.可以发现最终得出的是一个斐波那契数列:
 *       
 *         | 1, (n=1)
 * f(n) =  | 2, (n=2)
 *         | f(n-1)+f(n-2) ,(n>2,n为整数)
 * */

/**
 * 解题思路: 用迭代法。 
 * n=1;一阶只有一种跳法; 
 * n=2;二阶只有两种跳法:一次跳一级;一次跳两级;
 * n>2;也就是初始台阶为3,向后迭代:
 * 根据斐波那契数列:当前台阶的跳法总数=当前台阶后退一阶的台阶的跳法总数+当前台阶后退二阶的台阶的跳法总数
 * */

public class JumpFloor {
		public int jump(int target) {
			if (target < 0) return -1;
			if (target == 1 || target == 2) return target;
			int jumpSum = 0;// 当前台阶的跳法总数, 如当前台阶为3
			int jumpSumBackStep2 = 1;// 当前台阶的后退二阶的跳法总数, 后退二阶是1,那就是1种跳法
			int jumpSumBackStep1 = 2;// 当前台阶的后退一阶的跳法总数, 后退一阶是2,那就是2种跳法

			for (int i = 2; i < target; i++) {
				// 根据斐波那契数列:
				jumpSum = jumpSumBackStep2 + jumpSumBackStep1;// 当前台阶的跳法总数=当前台阶后退一阶的台阶的跳法总数+当前台阶后退二阶的台阶的跳法总数
				jumpSumBackStep2 = jumpSumBackStep1;// 更新迭代:当前台阶的后退一阶下一次迭代变为后退二阶
				jumpSumBackStep1 = jumpSum;// 更新迭代:当前台阶在下一次迭代变为后退一阶
			}

			return jumpSum;

		}
		
		public static void main(String[] args) {
			JumpFloor jumpFloor = new JumpFloor();
			int target = 5;
			int jumpSum = jumpFloor.jump(target);
			System.out.println(jumpSum);
		}

}


输出:

8



/**
* 递归法
**/

int jumpFloor(int target) {
        if(number <= 0)
            return -1;
        else if(target== 1 || target == 2)
            return target;

        else
            return jumpFloor(number-1) + jumpFloor(number-2);
    }


跳台阶问题 + 变态跳台阶问题 解法(动态规划递归 + 非递归) 一、跳台阶问题 题目描述: 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。 通过题目的描述,可以很清晰地看到,这就是一个Fibonacci数列。 递归实现: unsigned long long solution(int stageNum) { //定义递归出口 if(stageNum <= 0) re 阅读详情

相关推荐

面试题经典:跳台阶问题

题目: 给定一个有N个台阶的楼梯,一个人从下到上开始跳台阶,这个人有两种跳的方式:一次跳一个台阶,一次跳两个台阶; 问:从台阶底端跳到台阶顶端,有多少种跳台阶的方式? 分析: 首先我们考虑最简单的情况。如果只有1个台阶,那么显然只有一种跳法;如果是2级台阶,那么有2种跳法。对于一个有n级台阶的楼梯来说,我们设跳法为 f(n) ,假如我们先跳1个台阶,则剩下有 n-1 个台阶

leo115的专栏 1万+

跳台阶问题(任意阶数跳法分析)

跳台阶进阶 一个台阶总共有 n 级,可以一次跳到 n 阶台阶,也可以一 次跳 n-1 阶台阶,也可以跳 n-2 阶台阶……也可以跳 1 阶台阶。 问跳到 n 层台阶有多少种跳法?(n<=50) 输入格式: 输入台阶数 输出格式: 输出种类数 输入样例: 3 输出样例: 4 罗列结果观察有 n F(n) 1 1 2 2 3 4 4 8 … 分析...

w396998683的博客 1429

NC68:跳台阶以及跳台阶扩展问题

描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 数据范围:1≤n≤40 要求:时间复杂度:O(n) ,空间复杂度: O(1) 示例1 输入:2 返回值:2 说明:青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。因此答案为2 示例2 输入:7 返回值:21 方法一:递归 题目分析,假设f[i]表示在第i个台阶上可能的方法数。逆向思维。如果我从第n个台阶进行下台阶,下一步有2中可能,一种走到第n-1个台阶,

每天学习一点点,成长一小步 1459

【剑指offer】跳台阶问题 + 变态跳台阶问题 解法(动态规划递归 + 非递归) C++实现

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 通过题目的描述,可以很清晰地看到,这就是一个Fibonacci数列。 思路: a.如果两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1); b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2) c.由a\b假设可以得出总跳法为: f(n) = f(n-1) + f(n-2) d.然后通过实际的情况可以得出:只有一阶的时候 f(1) = 1 ,只有

Borrr的博客 780

WorkVisual传输程序报错_发现一个内部错误

WorkVisual传输程序报错_发现一个内部错误

qq_16401025的博客 2457

NMS非极大值抑制算法原理

NMS非极大值抑制算法

pywin 3501

跳台阶与变态跳台阶解法(Java实现)

这两道题博主都是用的数学归纳法。 首先 一.跳台阶 题目叙述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 情况: 1阶:跳1次 2阶:跳2次 3阶:跳3次 4阶:跳5次 5阶:跳8次 6阶:跳13次 7阶:跳21次 1,2,3,5,8,13,21···· 从次数可以看出是一种数列,那就是斐波那契数...

Anakki的博客 4259

ONFI5.0命令字实战指南:从基础操作到高级应用

本文深入解析ONFI5.0协议的核心——命令字,提供从基础操作到高级应用的实战指南。详细拆解了NAND闪存的复位、读状态、数据读取(00-30)、页编程(80-10)和块擦除(60-D0)等关键命令周期,并探讨了多平面操作与缓存操作等高级性能优化技巧,帮助开发者高效、稳定地与NAND芯片进行底层交互。

vscode5coder的博客 463

青蛙跳变式(后退)

动态规划 青蛙跳 变式1题目描述:题目分析 题目描述: 给出n阶台阶,每次只可以前进一步或者两步,中途有一次机会可以后退一步,这次机会也可以不使用,到达最后一个台阶一共有多少种走法 题目分析 最基础的青蛙跳是一组斐波那契数列, 即,: 如果不使用向后跳, 则按照斐波那契数列计算 其公式: f[i]=f[i−1]+f[i−2]f[i]=f[i-1]+f[i-2]f[i]=f[i−1]+f[i−2] , 其中f[0]=1.f[1]=1f[0]=1. f[1]=1f[0]=1.f[1]=1 则有

m0_37659309的博客 1795

CSR mascon产品深度解析

GRACE数据产品 mascon产品 质量变化 地球重力场

weixin_43047707的博客 4434

ESP8266-Arduino网络编程实例-异步TCP客户端

本次实例将使用ESPAsyncTCP库实现一个简单的客户端。

视觉与物联智能 1741

跳台阶算法java,跳台阶(思路和实现)

下面要给大家分享的实例同样是和跳台阶相关的内容,一起来看看具体的题目,以及解题思路和实现方式吧。题目:一只青蛙一次能够跳上1级台阶,也能够跳上2级台阶。求:这只青蛙跳上一个n级台阶一共的跳法有多少种?注:先后次序不同算不同的结果思路1:对于这个题目的话,前提是只有1次1阶或者是2阶的跳法1、假如2种跳法,1阶或者是2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1)2、假如...

weixin_39879522的博客 540

YOLOv11涨点改进 | 全网独家创新,注意力改进篇 | TGRS 2025 | 引入APCM自适应像素级协同机制,动态增强目标区域、抑制背景噪声,助力YOLOv11做红外小目标检测有效涨点

本文提出了一种基于APCM模块改进的YOLOv11网络模型,通过像素级局部-全局协同建模增强目标特征并抑制背景噪声。APCM模块采用轻量化设计,无需复杂参数,能有效提升小目标检测性能。文章详细介绍了APCM的原理、优势及其在红外小目标检测中的应用,包括模块结构、核心代码实现和YAML配置文件修改方法。实验结果表明,该方法在NUAA-SIRST和IRSTD-1K数据集上优于现有技术,显著提高了复杂场景下的检测精度与鲁棒性。

Ai缝合怪、助力小伙伴高效发论文 117

跳台阶&变态跳台阶——js

跳台阶&变态跳台阶 跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 变态跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路——跳台阶 跳台阶前提是只有一次1阶或者2阶的跳法: 假定第一次跳的是1阶,那么剩下的是n-1个台阶,跳法是f(n-...

qq_40608516的博客 285

SMART200如何实现多次调用子程序带定时器功能

1、西门子200PLC的子程序由于很多限制条件,如果希望建立一个可以多次调用的子程序,那么这个子程序里是不能含有定时器指令的,所以我们只能退而求其次了。建议将沿指令(上升沿、下降沿)放在多次调用子程序的外面。 2、可以提供不同的时基,提供不同时间的定时 3、实现秒定时 5、子程序内部: STL代码: 1、时基信号由外部提供、 可以提供不同的时基信号 2、实现循环定时开关 LD #Start:L0....

RXXW_Dor的博客 1万+

杰理AC696N系列芯片外部中断使用教程

本教程详细介绍了杰理AC696N芯片的GPIO引脚中断唤醒功能实现方法。主要内容包括: 功能特点: 支持任意GPIO引脚配置为中断源 可灵活选择上升沿或下降沿触发 提供自定义中断回调函数接口 核心实现: 通过port_wkup_interrupt_init()函数配置GPIO属性 使用request_irq()注册中断服务程序 提供中断使能/关闭接口 注意事项: 此功能在低功耗模式下无效 需注意引脚冲突和中断优先级设置 建议在回调函数中实现简洁的逻辑 应用场景: 按键检测 外部信号监测 事件触发等 本方案提

qq_42014563的博客 944

算法—跳台阶详解

算法—跳台阶详解 题目   一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 解题思路 用递归的思路比较好理解,跳到第n个台阶最后一步只有两种可能,第一,从第n-1跳一级。第二,从n-2跳2级。也就是说f(n) = f(n-1) + f(n-2) 题目衍生   一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。...

liaoyaonline的博客 2388

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

跳台阶与变态跳台阶

                                 跳台阶与变态跳台阶 题目一:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 思路:最开始看到这个题目时,没太多思路,但是总感觉之前大一acm的时候做过,最后想了一下用递归的思路,递归的思路有时候真的可以解决很多抽象复杂的问题,哈哈哈。这个题目,可以这样跳法。...

sunandstarws的博客 516

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【跳台阶】和【变态跳台阶】

题意:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法 【变态跳台阶】: 这里的f(n) 代表的是n个台阶有一次1,2,…n阶的 跳法数。 (1) n = 1时,只有1种跳法,f(1) = 1; n = 2时,会有两个跳得方式,一次1阶或者2阶, 这回归到了问题(1) ,f(2) = f(2-1) + f(2-2) ;n = 3...

云卷云舒 201

算法题——跳台阶及变态跳台阶

** 算法题——跳台阶 ** 题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序算不同的结果) 解题思路: 跳n级台阶只有2中可能: 假如最后一次跳了1级台阶,那么剩下的是 n-1 级台阶,跳法 f(n-1) 种; 假如最后一次跳了2级台阶,那么剩下的是 n-2 级台阶,跳法 f(n-2) 种。 故 f(n) = f(n-1) + f(n-...

weixin_43172031的博客 337

【规律】跳台阶、变态跳台阶

1、跳台阶/矩形覆盖 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 这两个解法一致 思路分析 比较倾向于找规律的解法,f(1) = 1, f(2) = 2,...

永生只是一场幻梦 2975

变态跳台阶——一次可以跳1级、也可以跳2级……也可以是n级。求跳上一个n级的台阶共有多少种跳法

变态跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 分析过程: 当台阶数 n = 0时、跳法f(n) = 0 n = 1 f(n) = 1 [1] n = 2 f(n) = 2 [1 1]、[2] n = 3 f(n) = 4 [1 1 1]、[2 1]、[1 2]、[3] n = 4 f(n) = 8 [1 1 1 1]、[...

vm04580 1601

跳台阶问题

#define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include"windows.h" #include"math.h" //青蛙跳台阶1一次一层或两层 int Sum(int n) { if (n <= 0) return 0; if (n == 1) return 1; if (n == 2) return 2; ...

快乐星球 1515

跳台阶以及变态跳台阶问题

解法一:target表示距离目标还有多远,进行递归 public class Solution { public int JumpFloor(int target) { if(target==0){ return 0; }else if(target==1){ retur

shl_shl的博客 1723

剑指offer-跳台阶与变态跳台阶

3.跳台阶与变态跳台阶 题目内容: 跳台阶: 变态跳台阶: 代码及思路: 跳台阶的思路与前一题斐波那契数列求解的方法相同,再次不再赘述。代码可以参照斐波那契数列的求解代码。 对于变态跳台阶问题 #include<iostream> using namespace std; class solution { public: int jumpFloorII(int...

larklili的博客 157
上一篇: 替换空格
下一篇: 整数1~n中1出现的次数
冷静BB
博客等级 码龄12年 298粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值