美文网首页
动态规划2:上台阶问题

动态规划2:上台阶问题

作者: RichardBillion | 来源:发表于2019-07-25 10:07 被阅读0次

有一个共N级的台阶,一次可以走1级或者2级,问从平地上出发到最高点有多少中走法。

分析: 从终点来看,其走法为倒数一级的走法加上倒数两级的走法。

记f(n) 为到第n级台阶的走法,

则得到DP方程: f(n) = f(n-1)+f(n-2);

初始值有:
f(0) = f(1) = 1

发现就是一个菲波那切数列。。

则代码为:

function res(n) {
    let arr = [];
    arr[0] = 1;
    arr[1] = 1;

    for(let i = 2; i<=n; i++) {
        arr[i] = arr[i-1] + arr[i-2];
    }
    return arr[n];
}

但其实没必要用一个数组来记录之前的值,可以只记录前两个值,将空间复杂度由O(n)降到O(1), 代码如下:

function result(n) {
    let a= 1;
    let b = 1;
    for(let i = 2; i <= n; i++) {
        [a, b] = [b, a+b];
    }
    return b;
}

相关文章

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

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

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

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

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

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

  • 上台阶问题-递归和动态规划

    上台阶是一个常见的问题,解法主要有递归和利用动态规划,这篇文章简单介绍下递归解法和动态规划,以及对应的代码。递归解...

  • 动态规划练习

    【动态规划问题求解步骤】Dynamic Programimng1、确认原问题与子问题。2、确认动态规划中间状态。3...

  • 浅层理解动态规划及利用动态规划解决最长公共子串等问题

    动态规划基本思想 动态规划的工作原理是先解决子问题,再逐步解决大问题。 用动态规划解决旅游规划问题 目前面对的问题...

  • 什么是动态规划

    目录 动态规划解决了什么 什么是动态规划 典型的动态规划 1. 动态规划解决了什么 的思想就是将大问题拆分成小问题...

  • 算法学习收藏

    动态规划问题 动态规划(最优子结构和重叠子问题的比较) 动态规划解决01背包问题 01背包问题 最优二叉查找树 《...

  • 其他来源:数据结构/算法学习笔记

    动态规划问题(Dynamic Programming) 首先,动态规划问题的一般形式就是求最值。动态规划其实是运筹...

  • 2022-02-19 动态规划高频题专题【1】

    动态规划基本类型 dp基础 背包问题 打家劫舍 股票问题 子序列问题 进阶动态规划 深入理解动态规划过程 定义dp...

网友评论

      本文标题:动态规划2:上台阶问题

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