C++

1 class Solution {
2 public:
3     int jumpFloorII(int n) {
4         return  1<<--n;
5     }
6 };

推导:

关于本题,前提是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)

5) 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)

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

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)

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

| 1       ,(n=0 )

f(n) =     | 1       ,(n=1 )

| 2*f(n-1),(n>=2)
1 class Solution {
2 public:
3     int jumpFloorII(int n) {
4         if (n <= 1) return 1;
5         return 2 * jumpFloorII(n-1);
6     }
7 };

转载于:https://www.cnblogs.com/CheeseZH/p/5112931.html

牛客网-《剑指offer》-变态跳台阶相关推荐

  1. 牛客网剑指offer编程实践1-10题

    牛客网剑指offer编程实践1-10题 1.二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这 ...

  2. Day5.牛客网剑指offer 67题之43-54题(java代码)

    文章目录 Day5.牛客网剑指offer 67题之43-54题 43.左旋转字符串 44.翻转单词顺序列 45.扑克牌顺序 46.孩子们的游戏 47.求1+2+...+n 48.不用加减乘除做加法 4 ...

  3. Java算法:牛客网Java版剑指Offer全套算法面试题目整理及电子档,Java算法与数据结构面试题,面试刷题、背题必备!牛客网剑指offer

    剑指offer(java版) 牛客网Java版剑指Offer全套题目67道 资源来源于网络 目录 1.二维数组中的查找 2.替换空格 3.从尾到头打印链表 4.重建二叉树 5.用两个栈实现队列 6.旋 ...

  4. 牛客网剑指offer java 全部题解

    经过数月的努力,终于更完了牛客网的66道剑指offer,以下的顺序和大家在牛客网的顺序是一样的(排序也花了不少时间),希望对大家找工作/提高算法能力能起到些许帮助. 每天一道剑指offer-二维数组中 ...

  5. 《牛客网 剑指Offer前20题》

    <剑指Offer> 牛客网 前20道题 前言知识 面试题1:二维数组中的查找 面试题2:二维数组中的查找 面试题3:从头到尾打印链表 面试题4:重建二叉树 ***** 面试题5:两个栈实现 ...

  6. 牛客网剑指offer(Python版)

    剑指offer官网:  https://www.nowcoder.com/ta/coding-interviews 写在前面的话 刷剑指offer的时候只需要提交函数核心部分,但是在公司实际笔试时却需 ...

  7. 牛客网剑指offer——Java题解

    剑指offer JZ1 二维数组中的查找 题目描述 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这 ...

  8. 牛客网剑指Offer C++题解

    [二维数组中的查找]:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是 ...

  9. 牛客网剑指offer编程实践41-50题

    41.和为S的连续正数序列 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两 ...

  10. string类函数和牛客网剑指offer刷题记录

    1.strcat char* strcat(char *strDest,const char *strSrc){assert(strDest && strSrc);char *p = ...

最新文章

  1. 高通:全球NB-IoT/eMTC最新现状
  2. 前端面试问题(HTML5+Http+web)
  3. (转)springboot:添加JSP支持
  4. php测试插入,php – 使用Symfony测试数据库插入
  5. source insight怎样恢复默认界面设置
  6. 大疆手持云台和华为mate20_告别手残,华为Mate30与大疆手持云台拍照真香
  7. Sysbench压测
  8. 吴恩达机器学习2——单变量线性回归
  9. virtualbox谨记:续....
  10. PAT——1005. 继续(3n+1)猜想 (25)
  11. InputMethodManager内存泄漏的原因及解决方案
  12. fedora 18 视频解码器安装
  13. Hadoop3.2.1 【 HDFS 】源码分析 : Secondary Namenode解析
  14. 【IT之路】Docker拉取镜像查看版本
  15. 零基础学UI设计难吗?
  16. poi操作word,写入一个图片,并且设置其大小,以及图片和base64之间的互相转换,以及表格内容替换和插入
  17. 中国剩余定理模数不互素的情况
  18. OC block的回环引用
  19. 二月,劝程序员不要跳槽!
  20. 主分区和逻辑分区的区别

热门文章

  1. SQLi LABS Less 16 布尔盲注
  2. Windows系统(cmd)常用命令
  3. Android调用Java WebSevice篇之二
  4. Win2003打不开https的问题
  5. Android 相对布局常用属性
  6. 资源管理器停止工作,自动重启
  7. 整数输入有理循环小数 1/7 = 0.142857142... 是个无限循环小数。 任何有理数都可以表示为无限循环小数的形式。 本题目要求即是:给出一个数字的循环小数表示法。...
  8. 无锡给的sql excel转换
  9. python词云分析难吗_Python 词云分析周杰伦《晴天》
  10. Pytest之自定义mark