题目

一仅仅青蛙一次能够跳上1级台阶,也能够跳上2级……它也能够跳上n级。

求该青蛙跳上一个n级的台阶总共同拥有多少种跳法。

思路

用Fib(n)表示青蛙跳上n阶台阶的跳法数,设定Fib(0) = 1;

当n = 1 时。 仅仅有一种跳法,即1阶跳,即Fib(1) = 1;

当n = 2 时。 有两种跳的方式,一阶跳和二阶跳,即Fib(2) = Fib(1) + Fib(0) = 2;

当n = 3 时。有三种跳的方式,第一次跳出一阶台阶后,后面还有Fib(3-1)中跳法,第一次跳出二阶台阶后。后面还有Fib(3-2)中跳法,第一次跳出三阶台阶后,后面还有Fib(3-3)中跳法。即Fib(3) = Fib(2) + Fib(1)+Fib(0)=4;

当n = n 时。共同拥有n种跳的方式,第一次跳出一阶台阶后,后面还有Fib(n-1)中跳法。 第一次跳出二阶台阶后,后面还有Fib(n-2)中跳法……………………..第一次跳出n阶台阶后。后面还有 Fib(n-n)中跳法,即Fib(n) = Fib(n-1)+Fib(n-2)+Fib(n-3)+……….+Fib(n-n)=Fib(0)+Fib(1)+Fib(2)+…….+Fib(n-1)又由于Fib(n-1)=Fib(0)+Fib(1)+Fib(2)+…….+Fib(n-2)故Fib(n) = 2*Fib(n-1) n >= 2

综上所述:

代码

/*---------------------------------------
* 日期:2015-07-19
* 作者:SJF0115
* 题目: 2.变态跳台阶
* 网址:http://www.nowcoder.com/books/coding-interviews/22243d016f6b47f2a6928b4313c85387? rp=1
* 结果:AC
* 来源:剑指Offer
* 博客:
-----------------------------------------*/
#include <iostream>
using namespace std; class Solution {
public:
int jumpFloorII(int number) {
if(number <= 0){
return 0;
}//if
else if(number == 1){
return 1;
}//else
return 2*jumpFloorII(number - 1);
}
}; int main(){
Solution s;
int number = 5;
cout<<s.jumpFloorII(number)<<endl;
return 0;
}

[剑指Offer]2.变态跳台阶的更多相关文章

  1. Go语言实现:【剑指offer】变态跳台阶

    该题目来源于牛客网<剑指offer>专题. 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 找规律: 1阶:1种: 2阶:2 ...

  2. 剑指OFFER之变态跳台阶(九度OJ1389)

    题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1 ...

  3. 剑指offer:变态跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法.   思路 首先想到的解决方案是根据普通跳台阶题目改编,因为可以跳任意级,所以要 ...

  4. 剑指Offer 9. 变态跳台阶 (递归)

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目地址 https://www.nowcoder.com/practice/ ...

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

    C++ class Solution { public: int jumpFloorII(int n) { <<--n; } }; 推导: 关于本题,前提是n个台阶会有一次n阶的跳法.分析 ...

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

    一.题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 二.思路: f(n)=f(n-1)+f(n-2)+...+f(0),f(1) ...

  7. 剑指offer 09变态跳台阶

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

  8. [剑指Offer] 9.变态跳台阶

     题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. [思路1]每个台阶都有跳与不跳两种可能性(最后一个台阶除外),最后一个台阶必 ...

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

    一.题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 二.输入描述 n级台阶 三.输出描述 一共有多少种不同的跳法 四.牛客网提 ...

随机推荐

  1. 06-python进阶-多线程下载器练手

    我们需要用python 写一个多线程的下载器 我们要先获取这个文件的大小 然后将其分片 然后启动多线程 分别去下载 然后将其拼接起来 #!/usr/bin/env python#coding:utf- ...

  2. Emacs 安装与体验

        Emacs 安装与体验 下载与安装 首先是下载最新的x64版本的Emacs. 将下载下来的文件解压到你喜欢的磁盘目录下,我选择的是C:\Program Files.放在D盘可能是更好的选择,因 ...

  3. Leetcode with Python

    1. Two Sum Given an array of integers, return indices of the two numbers such that they add up to a ...

  4. [python工具][1]sublime安装与配置

    http://www.cnblogs.com/wind128/p/4409422.html 1 官网下载版本  http://www.sublimetext.com/3 选择 Windows - al ...

  5. 紫书第三章训练1 E - DNA Consensus String

    DNA (Deoxyribonucleic Acid) is the molecule which contains the genetic instructions. It consists of ...

  6. POJ 2021 Relative Relatives

    Relative Relatives Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3339   Accepted: 146 ...

  7. flex宽度总结

    flex宽度相关的属性有三个 flex-grow,flex-shrink,flex-basis.下面分别介绍其相关特点: flex-grow 扩大因子,主轴有剩余空间时,元素分配到剩余空间的比率 fl ...

  8. LCT(Link-Cut Tree)

    Link-cut tree(LCT)[可以理解为树链剖分+splay] 给出如下定义: access(x):访问x节点 perferred child:若以x为根的子树中最后被访问的节点在以x的儿子y ...

  9. HDU 2594 kmp算法变形

    Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java ...

  10. FOJ Problem 2257 Saya的小熊饼干

                                                                                                        ...