【剑指offer】_06 变态跳台阶
题目描述
一只青蛙一次可以跳上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)
说明:
- 这里的f(n) 代表的是n个台阶有一次1,2,…n阶的 跳法数。
- n = 1时,只有1种跳法,f(1) = 1
- n = 2时,会有两个跳得方式,一次1阶或者2阶,这回归到了问题(1) ,f(2) = f(2-1) + f(2-2)
- 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)
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)
由以上已经是一种结论,但是为了简单,我们可以继续简化:
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)
得出最终结论,在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 变态跳台阶相关推荐
- 剑指Offer #09 变态跳台阶(数列推导)
题目来源:牛客网-剑指Offer专题 题目地址:变态跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目解析 这道题有 ...
- 剑指offer九:变态跳台阶
一.题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 二.解题思路 可以延续上一题的思路,逆向思维来考虑这个问题.要想跳到第n级 ...
- 剑指offer:变态跳台阶
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解题思路: 和之前跳台阶问题相比,这道题就是将跳台阶的类型增加到了n.实际上 ...
- 《剑指offer》变态跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析:由上一篇跳台阶知道f(n)=f(n-1)+f(n-2)种,现在可以跳n阶,则 ...
- 《剑指Offer》 变态跳台阶
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路: 这个其实是一道动态规划问题,d[1]=1,d[i]=d[i-1]+d ...
- 牛客网-《剑指offer》-变态跳台阶
C++ 1 class Solution { 2 public: 3 int jumpFloorII(int n) { 4 return 1<<--n; 5 } 6 }; 推导: 关于本题 ...
- 剑指offer之变态跳台阶
问题描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 求解思路 该题目肯定不能用递归求解和组合路径的方式.结合前一个题目的斐 ...
- 剑指offer 09变态跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. java版本: public class Solution {public static ...
- 【剑指offer】变态跳台阶
时间限制:1秒 空间限制:32768K 热度指数:255284 算法知识视频讲解 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法 ...
- 《LeetCode力扣练习》剑指 Offer 10- II. 青蛙跳台阶问题 Java
<LeetCode力扣练习>剑指 Offer 10- II. 青蛙跳台阶问题 Java 一.资源 题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总 ...
最新文章
- iis php5.3 mysql_Win2008 R2配置IIS7.5+PHP Manager+PHP5.3+Mysql5.5+Wincache
- Python 列表与元组的速度比较
- python操作数据库 封装类
- 干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
- winpe镜像文件iso下载_下载:微软正式发布Win10 2004版并即日起开始推送
- 利用yii2 gridview实现批量删除案例
- TextArea换行 滚动条
- 【nyoj - 860】 又见0-1背包 (dp,反向0-1背包,好题好思路)
- c语言会生成class文件,一文带你刨析class文件
- HTML+CSS制作Windows启动加载动画
- Python 模块EasyGui
- 优分享VR开源啦,优分享VR是基于Google VR开发的一款手机VR视频资源的聚合软件...
- oppo9s刷机教程_OPPO R9s刷机教程_OPPO R9s卡刷升级更新官方系统包
- 需求分析-业务需求、用户需求、功能需求
- Xilinx FPGA 下载器驱动提示“系统找不到指定的路径”的解决办法
- 我在智联招聘上的行为测试
- VB-TabIndex、GotFocus、SetFocus
- C语言井字棋电脑相互对战
- 写个工具实现频率和频点的转换
- 数据库自增id没有从0开始
热门文章
- DRF url控制 解析器 响应器 版本控制 分页(常规分页,偏移分页,cursor游标分页)...
- 3.0 C++远征:is a
- linux之x86裁剪移植---ffmpeg的H264解码显示(420、422)
- Javascript常用的设计模式详解
- JAVA多线程学习3--线程一些方法
- turtle 函数 方法_学python第十一节:turtle深入 了解
- echarts中triggeron与trigger不能同时出现吗_好物|痛风、血糖高、虚不受补能吃它吗?你想知道的阿胶十问十答一锅出!...
- 南岸焊接机器人厂_造船三部高效焊接工艺技术年鉴
- nao机器人拆解_一些机器人硬件网站
- mysqls压力测试怎么用_阿里研究员:测试稳定性三板斧,我怎么用?