JS 实现动态规划

简介: JS 实现动态规划

function getPaths(m, n) {
    // m * n 二维数组,模拟网格
    const map = new Array(m)
    for (let i = 0; i < m; i++) {
        map[i] = new Array(n)
    }

    // 如果只走第一行,就只有一条路径。所以第一行所有 item 都填充 1
    map[0].fill(1)

    // 如果只走第一列,也只有一条路径。所以第一列所有 item 都填充 1
    for (let i = 0; i < m; i++) {
        map[i][0] = 1
    }

    // 其他 item ,根据这个公式 map[i][j] = map[i - 1][j] + map[i][j - 1]
    // 如走到 [5, 4] 的路径数,就是 [4, 4] 和 [5, 3] 路径数的总和 —— 动态规划的思想
    // 注意:i 和 j 都从 1 开始 !!! 因为 0 位置已经被上文赋值为了
    for (let i = 1; i < m; i++) {
        for (let j = 1; j < n; j++) {
            map[i][j] = map[i - 1][j] + map[i][j - 1]
        }
    }

    // 返回 finish 节点的路径数
    return map[m - 1][n - 1]
}

console.log('paths', getPaths(5, 4))
目录
相关文章
|
存储 缓存 算法
JS算法之动态规划
动态规划基础知识 单序列问题 双序列问题 矩阵路径问题 背包问题
157 0
|
算法 JavaScript
js 实现 贪心算法和动态规划 贪心找零问题, 动态规划 青蛙跳台阶问题
js 实现 贪心算法和动态规划 贪心找零问题, 动态规划 青蛙跳台阶问题
|
存储 算法 JavaScript
js算法初窥05(算法模式02-动态规划与贪心算法)
  在前面的文章中(js算法初窥02(排序算法02-归并、快速以及堆排)我们学习了如何用分治法来实现归并排序,那么动态规划跟分治法有点类似,但是分治法是把问题分解成互相独立的子问题,最后组合它们的结果,而动态规划则是把问题分解成互相依赖的子问题。
1539 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
86 2
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
109 4
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
78 4
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物交易平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物交易平台附带文章源码部署视频讲解等
70 4
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的大学生入伍人员管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的大学生入伍人员管理系统附带文章源码部署视频讲解等
88 4
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp宿舍管理系统的附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp宿舍管理系统的附带文章源码部署视频讲解等
80 3
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的家政平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的家政平台附带文章源码部署视频讲解等
60 3