上台阶问题

作者: EmptyColor | 来源:发表于2017-10-21 12:57 被阅读40次

栗子

有一段楼梯台阶有15级台阶,以小明的脚力一步最多只能跨3级,请问小明登上这段楼梯有多少种不同的走法?

类似用递归求斐波那契数列。

  • 一个阶梯的时候 只有一种方法 1
  • 两个阶梯的时候 有两种方法 11,2
  • 三个阶梯的时候 有四种方法 111,12,21,3
  • 四个阶梯的时候 有七种方法 1111,112, 121, 211 ,22 , 13 , 31

可以观察到f(4) = f(3) + f(2) + f(1)f(n) = f(n-1) + f(n-2) + f(n-3) 依此写出下面的code

#Python
def stairs(n):
    if n == 1:
        return 1
    elif n == 2:
        return 2
    elif n == 3:
        return 4

    return stairs(n-1) + stairs(n-2) + stairs(n-3)

print fib(15)
#outputs : 5768

这里当n值变得很大的时候 会涉及到时间太长的问题 下面是用空间换时间的方法

//cpp

class Solution {
public:
    int stairs(int n) {
        vector<int> v;
        v[1] = 1;
        v[2] = 2;
        v[3] = 3;
        for(int i = 4; i <= n; ++i){
            v[i] = v[i - 1] + v[i - 2] + v[i - 3];
        }
        return v[n];
    }
};

下面是《剑指offer》里的问题 把跳台阶的格数扩展到n

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

这里有一个很精妙的解法:
因为除了最后一阶台阶之外 每次跳台阶都只有两种选择 即跳或不跳 所以扩展到n就是2^(n-1)

//cpp
class Solution {
public:
    int jumpFloorII(int number) {
        return pow(2,number-1);
    }
};

也可写为

//cpp
class Solution {
public:
    int jumpFloorII(int number) {
        return 1<<--number;
    }
};

然后是可以用归纳法的思想来解
手写 1阶 2阶 3阶 4阶 5阶 发现分别为1 2 4 8 16 所以n阶为2^(n-1)(大雾)

相关文章

  • 上台阶问题

    楼梯有100阶台阶,上楼时可以一步上1阶,也可以一步上2阶,问共有多少种走法解析:我们现在想象自己已经站在第n级台...

  • 上台阶问题

    栗子 有一段楼梯台阶有15级台阶,以小明的脚力一步最多只能跨3级,请问小明登上这段楼梯有多少种不同的走法?() 类...

  • 上台阶问题

    上台阶问题 有n阶台阶(n>0),小明一次可以上一步,或者两步,请问小明有多少种上台阶的方案? 设小明有种上台阶方...

  • 编程笔试-上台阶问题

    题目 已知从山脚到山顶共有m个台阶,一次可爬a-b个台阶,由于年久失修,部分台阶已坏无法站立,已知坏的台阶共有n个...

  • 面试题:上台阶问题

    有次面试被问到这个:n个台阶,一次可以走1步,也可以走2步,有多少种走法。递归实现如下:

  • 动态规划之-上台阶问题

    最近在刷题,碰到了上台阶问题,据说这也是Google的面试题,今天来整理一下。 问题描述 有一楼梯共m级,若每次只...

  • 动态规划2:上台阶问题

    有一个共N级的台阶,一次可以走1级或者2级,问从平地上出发到最高点有多少中走法。 分析: 从终点来看,其走法为倒数...

  • [算法] - 上台阶问题(动态规划)

    1. 问题 有十级台阶,每次只能上一级或者两级,问一共有多少种组合。 2. 代码 3. 参考 漫画:什么是动态规划...

  • 经典DP问题合集

    一、上台阶问题 二、矩阵最小路径和 三、最长递增子序列 四、最长公共子序列 五、背包问题

  • 递归算法:上台阶算法

    1、环境配置: 系统:win10 编程语言:C++ 编译器:DevC++ 2、算法思想: 问题:上台阶问题就是每次...

网友评论

    本文标题:上台阶问题

    本文链接:https://www.haomeiwen.com/subject/yrjiuxtx.html