题目描述

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

解题思路

链接:https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387

关于本题,前提是n个台阶会有一次n阶的跳法。分析如下:

f(1) = 1

f(2) = f(2-1) + f(2-2) //f(2-2) 表示2阶一次跳2阶的次数。

f(3) = f(3-1) + f(3-2) + f(3-3)

f(n) = f(n-1) + f(n-2) + f(n-3) + … + f(n-(n-1)) + f(n-n)

说明:

  1. 这里的f(n) 代表的是n个台阶有一次1,2,…n阶的 跳法数。
  2. n = 1时,只有1种跳法,f(1) = 1
  3. n = 2时,会有两个跳得方式,一次1阶或者2阶,这回归到了问题(1) ,f(2) = f(2-1) + f(2-2)
  4. n = 3时,会有三种跳得方式,1阶、2阶、3阶,

那么就是第一次跳出1阶后面剩下:f(3-1);第一次跳出2阶,剩下f(3-2);第一次3阶,那么剩下f(3-3)

因此结论是f(3) = f(3-1)+f(3-2)+f(3-3)

  1. n = n时,会有n中跳的方式,1阶、2阶…n阶,得出结论:

    f(n) = f(n-1)+f(n-2)+…+f(n-(n-1)) + f(n-n) => f(0) + f(1) + f(2) + f(3) + … + f(n-1)

  2. 由以上已经是一种结论,但是为了简单,我们可以继续简化:

    f(n-1) = f(0) + f(1)+f(2)+f(3) + … + f((n-1)-1) = f(0) + f(1) + f(2) + f(3) + … + f(n-2)

    f(n) = f(0) + f(1) + f(2) + f(3) + … + f(n-2) + f(n-1) = f(n-1) + f(n-1)

    可以得出

    f(n) = 2*f(n-1)

  3. 得出最终结论,在n阶台阶,一次有1、2、…n阶的跳的方式时,总得跳法为

  • f(n) = 1 ,(n=0 )
  • f(n) = 1 ,(n=1 )
  • 2*f(n-1),(n>=2)

代码实现

class Solution {public:int jumpFloorII(int number) {if(number == 0)return 1;if(number == 1)return 1;if(number >1)return 2*jumpFloorII(number - 1);}
};

【剑指offer】_06 变态跳台阶相关推荐

  1. 剑指Offer #09 变态跳台阶(数列推导)

    题目来源:牛客网-剑指Offer专题 题目地址:变态跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目解析 这道题有 ...

  2. 剑指offer九:变态跳台阶

    一.题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 二.解题思路 可以延续上一题的思路,逆向思维来考虑这个问题.要想跳到第n级 ...

  3. 剑指offer:变态跳台阶

    题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解题思路: 和之前跳台阶问题相比,这道题就是将跳台阶的类型增加到了n.实际上 ...

  4. 《剑指offer》变态跳台阶

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析:由上一篇跳台阶知道f(n)=f(n-1)+f(n-2)种,现在可以跳n阶,则 ...

  5. 《剑指Offer》 变态跳台阶

    题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路: 这个其实是一道动态规划问题,d[1]=1,d[i]=d[i-1]+d ...

  6. 牛客网-《剑指offer》-变态跳台阶

    C++ 1 class Solution { 2 public: 3 int jumpFloorII(int n) { 4 return 1<<--n; 5 } 6 }; 推导: 关于本题 ...

  7. 剑指offer之变态跳台阶

    问题描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 求解思路 该题目肯定不能用递归求解和组合路径的方式.结合前一个题目的斐 ...

  8. 剑指offer 09变态跳台阶

    一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. java版本: public class Solution {public static ...

  9. 【剑指offer】变态跳台阶

    时间限制:1秒 空间限制:32768K 热度指数:255284 算法知识视频讲解 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法 ...

  10. 《LeetCode力扣练习》剑指 Offer 10- II. 青蛙跳台阶问题 Java

    <LeetCode力扣练习>剑指 Offer 10- II. 青蛙跳台阶问题 Java 一.资源 题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总 ...

最新文章

  1. iis php5.3 mysql_Win2008 R2配置IIS7.5+PHP Manager+PHP5.3+Mysql5.5+Wincache
  2. Python 列表与元组的速度比较
  3. python操作数据库 封装类
  4. 干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
  5. winpe镜像文件iso下载_下载:微软正式发布Win10 2004版并即日起开始推送
  6. 利用yii2 gridview实现批量删除案例
  7. TextArea换行 滚动条
  8. 【nyoj - 860】 又见0-1背包 (dp,反向0-1背包,好题好思路)
  9. c语言会生成class文件,一文带你刨析class文件
  10. HTML+CSS制作Windows启动加载动画
  11. Python 模块EasyGui
  12. 优分享VR开源啦,优分享VR是基于Google VR开发的一款手机VR视频资源的聚合软件...
  13. oppo9s刷机教程_OPPO R9s刷机教程_OPPO R9s卡刷升级更新官方系统包
  14. 需求分析-业务需求、用户需求、功能需求
  15. Xilinx FPGA 下载器驱动提示“系统找不到指定的路径”的解决办法
  16. 我在智联招聘上的行为测试
  17. VB-TabIndex、GotFocus、SetFocus
  18. C语言井字棋电脑相互对战
  19. 写个工具实现频率和频点的转换
  20. 数据库自增id没有从0开始

热门文章

  1. DRF url控制 解析器 响应器 版本控制 分页(常规分页,偏移分页,cursor游标分页)...
  2. 3.0 C++远征:is a
  3. linux之x86裁剪移植---ffmpeg的H264解码显示(420、422)
  4. Javascript常用的设计模式详解
  5. JAVA多线程学习3--线程一些方法
  6. turtle 函数 方法_学python第十一节:turtle深入 了解
  7. echarts中triggeron与trigger不能同时出现吗_好物|痛风、血糖高、虚不受补能吃它吗?你想知道的阿胶十问十答一锅出!...
  8. 南岸焊接机器人厂_造船三部高效焊接工艺技术年鉴
  9. nao机器人拆解_一些机器人硬件网站
  10. mysqls压力测试怎么用_阿里研究员:测试稳定性三板斧,我怎么用?