题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

分析:如果台阶数为0,就有0种跳法;如果台阶数为1,那么就有1种跳法;如果台阶数为2,那么就有2种跳法;如果台阶数为3,则有3种跳法。当台阶数小于等于3的时候,列举法都可以列举出来,当台阶数为4的时候,问题就开始变得复杂了,我们可以这样想,由于一次跳的台阶数只能是1或者2,那么要跳到第4个台阶,只有两种可能,要么从第2个台阶跳2个台阶到第4个,要么就是从第3个台阶跳1个台阶到第4个。所以跳到第4个台阶的跳法就应该等于跳到第2个台阶的总方法加上跳到第3个台阶的总方法,即f(4)=f(2)+f(3)。要想跳到第5个台阶,同样的道理,要么是从第3个台阶直接跳2个台阶到5个台阶,要么从第4个台阶直接跳1个台阶到第5个台阶,所以跳到第5个台阶的跳法就应该等于跳到第3个台阶的总方法加上跳到第4个台阶的总方法,即f(5)=f(4)+f(3)。依次内推方法。。。自己在纸上画下很直观的可以看出来,所以这题的思想其实就是裴波那契数列。但是用递归的方法的话就会过于复杂,可能运行会超时。

class Solution {
public:
    int jumpFloor(int number) {

int result[3]={0,1,2};

if(number<3)

return result[number];

int frontStage1=1;          //frontStage1与frontStage2分别记录当前台阶前面两次总的跳的方法

int frontStage2=2;          //因为下面for循环是从3开始的,初始化为frontStage1=1,frontStage2=2。

int StageNumber;          //定义总的跳发次数

for(int i=3;i<=number;i++)

{

StageNumber=frontStage1+frontStage2;

frontStage1=frontStage2;            //更新frontStage1与frontStage2,使其成为下次计算跳到第n个台阶的前面两种方法

frontStage2=StageNumber;        //即f(n)=f(n-1)+f(n-2)

}

return StageNumber;

}
};

剑指offer面试题[9-1]-跳台阶相关推荐

  1. 剑指Offer - 面试题10- II. 青蛙跳台阶问题

    1. 题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008 ...

  2. 剑指offer面试题[9-2]-变态跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 除了最后一个台阶,其余的台阶都有跳与不跳两种情况. 因此,假设有n个台 ...

  3. 剑指offer面试题10- II. 青蛙跳台阶问题(动态规划)(递归)(斐波那契数列)

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008, ...

  4. 剑指Offer (九):跳台阶问题进阶版(Java版)

    问题,一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 这个问题明显是由跳台阶进阶而来,我们由于已经做过跳台阶问题,先进行简单分析. 首先 ...

  5. 牛客网(剑指offer) 第九题 变态跳台阶

    //题目描述 //一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. <?phpfunction jumpFloorII($numbe ...

  6. 牛客网(剑指offer) 第八题 跳台阶

    //题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. <?phpfunction jumpFloor($number) {if($number ...

  7. 【重点】剑指offer——面试题53:正则表达式匹配

    剑指offer--面试题53:正则表达式匹配 这个属于不是那么好做的题目之一...参考网址:https://www.nowcoder.com/profile/3639006/codeBookDetai ...

  8. 剑指offer——面试题45:圆圈中最后剩下的数字(孩子们的游戏)

    剑指offer--面试题45:圆圈中最后剩下的数字(孩子们的游戏) Solution1: 当年第一遍做时,自己想的垃圾算法 class Solution { public:int LastRemain ...

  9. 剑指offer——面试题28:字符串的排列

    剑指offer--面试题28:字符串的排列 Solution1: 2018年9月2日重做 典型的DFS套路,LeetCode 46 && 47 [46]https://blog.csd ...

  10. 【剑指Offer面试题】 九度OJ1510:替换空格

    c/c++ 中的字符串以"\0"作为结尾符.这样每一个字符串都有一个额外字符的开销. 以下代码将造成内存越界. char str[10]; strcpy(str, "01 ...

最新文章

  1. Hands-On Unity 2018 x 移动游戏开发教程
  2. 星星模型 维度_用模型“想象”出来的target来训练,可以提高分类的效果!
  3. lol个服务器在线人数,LOL除国服外,全球在线人数达1380万,韩服最多380万
  4. Python: The _imagingft C module is not installed错误的解决
  5. python expect模块_PYTHON基础语法全面总结
  6. 实施SAP:资源和进度
  7. C++ 中的this指针详解及实例
  8. 《Python Cookbook 3rd》笔记(1.9):查找两字典的相同点
  9. 天池 在线编程 中位数
  10. NetStatusEvent info对象的状态或错误情况的属性
  11. python自动化办公-python自动化办公?学这些就够用了
  12. python可以写前端吗_哪种ide能同时写java和前端代码?
  13. 初学java--变量、属性、方法命名以及类命名规范
  14. 解决U盘插入我的电脑中不显示
  15. Java 分页计算公式
  16. 基于ifix组态软件研究控制按钮权限
  17. Android人脸识别活体检测开发入门--基于虹软免费SDK实现
  18. java 毫秒转分钟和秒_将毫秒转换为分钟和秒的java程序
  19. caesar java_java实现caesar加解密算法
  20. C Prime Plus 第一章 初识C语言

热门文章

  1. LCA树两个节点最低公共祖先
  2. ascii码为0的字符_2.4 序列之字符串
  3. javamailsender注入失败_Springboot 之 JavaMailSender发送电子邮件
  4. fpga一个按键控制跑马灯启停_车上这些开关都认识吗?一次带你认清车上按键...
  5. pet缩聚流程图_PET生产工艺流程分解.ppt
  6. mysql unix格式_将MySQL Unix-Timestamp格式转换为日期格式?
  7. c语言gui程序,GUI编程
  8. nodejs连接远程MySQL数据库_nodejs remote链接mysql数据库总结
  9. 2017河北对口升学计算机试题,2017河北对口升学计算机专业理论试题(含答案).doc...
  10. 如何在Windows下发布QT应用程序