返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript网格中的最小路径讲解
  • 241
分享到

JavaScript网格中的最小路径讲解

2024-04-02 19:04:59 241人浏览 泡泡鱼
摘要

目录问题描述思路分析AC代码问题描述 给你一个下标从 0 开始的整数矩阵 grid ,矩阵大小为 m x n ,由从 0 到 m * n - 1 的不同整数组成。你可以在此

问题描述

给你一个下标从 0 开始的整数矩阵 grid ,矩阵大小为 m x n ,由从 0 到 m * n - 1 的不同整数组成。你可以在此矩阵中,从一个单元格移动到 下一行 的任何其他单元格。如果你位于单元格 (x, y) ,且满足 x < m - 1 ,你可以移动到 (x + 1, 0), (x + 1, 1), ..., (x + 1, n - 1) 中的任何一个单元格。注意: 在最后一行中的单元格不能触发移动。

每次可能的移动都需要付出对应的代价,代价用一个下标从 0 开始的二维数组 moveCost 表示,该数组大小为 (m * n) x n ,其中 moveCost[i][j] 是从值为 i 的单元格移动到下一行第 j 列单元格的代价。从 grid 最后一行的单元格移动的代价可以忽略。

grid 一条路径的代价是:所有路径经过的单元格的 值之和 加上 所有移动的 代价之和 。从 第一行 任意单元格出发,返回到达 最后一行 任意单元格的最小路径代价。

示例 1:

输入:grid = [[5,3],[4,0],[2,1]], moveCost = [[9,8],[1,5],[10,12],[18,6],[2,4],[14,3]]
输出:17
解释:最小代价的路径是 5 -> 0 -> 1 。
- 路径途经单元格值之和 5 + 0 + 1 = 6 。
- 从 5 移动到 0 的代价为 3 。
- 从 0 移动到 1 的代价为 8 。
路径总代价为 6 + 3 + 8 = 17 。

示例 2:

输入:grid = [[5,1,2],[4,0,3]], moveCost = [[12,10,15],[20,23,8],[21,7,1],[8,1,13],[9,10,25],[5,3,2]]
输出:6
解释:
最小代价的路径是 2 -> 3 。 
- 路径途经单元格值之和 2 + 3 = 5 。 
- 从 2 移动到 3 的代价为 1 。 
路径总代价为 5 + 1 = 6 。

提示:

m == grid.length
n == grid[i].length
2 <= m, n <= 50
grid 由从 0 到 m * n - 1 的不同整数组成
moveCost.length == m * n
moveCost[i].length == n
1 <= moveCost[i][j] <= 100

思路分析

这道题目其实并不难,难的是对于题目的理解,题目有点长和绕,我们需要仔细阅读清楚题目给的信息,结合示例一的图片进行理解会更清晰。

1、题目会给出一个 m * n 的矩阵;

一个下标从 0 开始的整数矩阵 grid ,矩阵大小为 m x n ,由从 0 到 m * n - 1 的不同整数组成。

2、每一行的格子可以移动到下一行的任意一格;

在此矩阵中,从一个单元格移动到 下一行 的任何其他单元格。如果你位于单元格 (x, y) ,且满足 x < m - 1 ,你可以移动到 (x + 1, 0), (x + 1, 1), ..., (x + 1, n - 1) 中的任何一个单元格。

3、moveCost[i][j]表示从值为 i 的单元格移动到下一行第 j 列单元格的代价

每次可能的移动都需要付出对应的代价,代价用一个下标从 0 开始的二维数组 moveCost 表示,该数组大小为 (m * n) x n ,其中 moveCost[i][j] 是从值为 i 的单元格移动到下一行第 j 列单元格的代价。

4、求从 第一行 任意单元格出发,返回到达 最后一行 任意单元格的最小路径代价。

grid 一条路径的代价是:所有路径经过的单元格的 值之和 加上 所有移动的 代价之和 。从 第一行 任意单元格出发,返回到达 最后一行 任意单元格的最小路径代价。

理清楚上面的这四个信息之后,我们可以发现这是一道经典的dp动态规划的题目,我们每一个格子的上一步只能是上一行的某一格,我们只需要自顶向下求出移动到每一个格子的最下代价即可。

遍历矩阵的每一个格子,维护上一行到当前格子的最小代价,最后求出最后一行的格子的最小代价即可。

AC代码


 var minPathCost = function(grid, moveCost) {
    let dp = new Array(grid.length);
    let res = Infinity;
    for(let i = 0; i < dp.length; i++){
        dp[i] = new Array(grid[i].length).fill(0);
        for(let j = 0; j <  dp[i].length; j++){
            if(i === 0) dp[i][j] = grid[i][j];
            else{
                let temp = Infinity;
                for(let k = 0; k < dp[i].length; k++){
                    temp = Math.min(temp,dp[i - 1][k] + moveCost[grid[i - 1][k]][j]);
                }
                dp[i][j] = temp + grid[i][j];
            }
            if(i == grid.length - 1){
                res = Math.min(dp[i][j],res);
            }
        }
    }
    return res;
};

到此这篇关于javascript网格中的最小路径讲解的文章就介绍到这了,更多相关js网格内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript网格中的最小路径讲解

本文链接: https://lsjlt.com/news/152102.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript网格中的最小路径讲解
    目录问题描述思路分析AC代码问题描述 给你一个下标从 0 开始的整数矩阵 grid ,矩阵大小为 m x n ,由从 0 到 m * n - 1 的不同整数组成。你可以在此...
    99+
    2024-04-02
  • JavaScript网格中的最小路径怎么实现
    这篇“JavaScript网格中的最小路径怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript网格中的...
    99+
    2023-07-02
  • C++的最短路径的弗洛伊德算法案例讲解
    现在我们有这么一张图: 我们要做的是求出从某一点到达任意一点的最短距离,我们先用邻接矩阵来建图,map[i][j]表示从i点到j点的距离,把自己到自己设为0,把自己到不了的边初始化...
    99+
    2024-04-02
  • JavaScript路径打包:Java中的最佳实践是什么?
    随着前端技术的发展,JavaScript已经成为了网页开发中的重要组成部分。而在JavaScript开发中,路径打包是一个非常重要的问题。Java中的最佳实践是什么?本文将为您详细介绍JavaScript路径打包的相关知识,并提供Java中...
    99+
    2023-09-10
    打包 javascript path
  • Linux中的JavaScript路径问题解决方案?
    在Linux操作系统中,JavaScript路径问题一直是开发者们比较头疼的一个问题,因为在Linux系统中,文件路径和Windows系统中有所不同,如果不注意路径的书写格式,就会出现找不到文件的情况。那么,在Linux中如何解决JavaS...
    99+
    2023-10-12
    linux path javascript
  • Runtime.getRuntime().exec 路径包含空格的解决
    目录Runtime.getRuntime().exec 路径包含空格1. 现象2. 原因解决办法Runtime.getRuntime().exec()产生阻塞的2个陷阱背景关于Run...
    99+
    2024-04-02
  • PHP 中使用 JavaScript API 处理路径的最佳实践是什么?
    在开发 Web 应用程序时,PHP 和 JavaScript 是最常用的编程语言。PHP 通常用于处理服务器端的逻辑,而 JavaScript 用于处理客户端的交互和动态效果。在这两种编程语言中,处理路径是一个常见的需求。本文将介绍在 P...
    99+
    2023-11-10
    api javascript path
  • VBS中解决带空格路径的方法有哪些
    本篇内容介绍了“VBS中解决带空格路径的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!方法一:Set wshell=Cr...
    99+
    2023-06-08
  • Python 最短路径的几种求解方式
    目录...
    99+
    2024-04-02
  • 算法---二叉树中的最大路径和
    题目 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 roo...
    99+
    2023-08-30
    算法
  • python中的中文路径解决
    python中的中文路径解决: 注:1、sys.setdefaultencoding('utf-8')将python默认encode改为utf-82、p.write(s.encode('utf-8')+"\n")写入时再encode('ut...
    99+
    2023-01-31
    中文 路径 python
  • Python最短路径的求解方式有哪些
    这篇文章主要介绍“Python最短路径的求解方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python最短路径的求解方式有哪些”文章能帮助大家解决问题。前置知识图的话可以大致分为有向图与无...
    99+
    2023-06-30
  • python中最短路径问题的示例分析
    小编给大家分享一下python中最短路径问题的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!说明最短路径问题是图论研究中的经典算法问题,用于计算从一个顶点到另一个顶点的最短路径。最短路径问题有几种形式:确定起点的最...
    99+
    2023-06-20
  • Python和Django中路径同步的最佳实践?
    Python和Django是现代Web开发中最热门的技术之一。其中,路径同步是一个非常重要的问题。在本文中,我们将讨论Python和Django中路径同步的最佳实践,并提供演示代码。 路径同步是指在不同的环境中使用相同的路径。例如,在本地开...
    99+
    2023-06-03
    path 同步 django
  • PHP中的Windows路径函数:您需要了解的最佳实践。
    在Windows操作系统中,路径是一个非常重要的概念。在PHP中,我们经常需要使用路径来引用文件和目录。不同的操作系统有不同的路径表示方法,因此在Windows中使用PHP时,我们需要了解如何正确地处理Windows路径。 本文将为您介绍...
    99+
    2023-08-10
    windows path 函数
  • JavaWeb中的路径问题解读
    目录JavaWeb路径问题要区分相对路径和绝对路径在相对路径可能失效的页面中 使用绝对路径解决问题JavaWeb路径问题 要知道我们在ide中新建的项目,当发布到服务器上时,src中...
    99+
    2022-11-21
    JavaWeb路径问题 JavaWeb路径 JavaWeb中的路径
  • 编程算法之路:探索Java和Django中的最佳路径
    在计算机编程中,算法是解决问题的关键,而编程语言则是实现算法的工具。Java和Django是两种不同的编程语言,它们各自具有自己的特点和优势。在本文中,我们将探索Java和Django中编程算法的最佳路径。 Java是一种面向对象的编程语...
    99+
    2023-08-15
    django path 编程算法
  • JavaScript中的运算符讲解
    一、JavaScript 算术运算符 算数运算符用于对数字执行算数运算: +:加法-:减法*:乘法/:除法%:系数++:递加--:递减 加法运算符(+)对数字相加: var x = ...
    99+
    2024-04-02
  • 解读node.js中的path路径模块
    目录1. 什么是 path 路径模块2. 路径拼接3. 获取路径中的文件名 4. 获取路径中的文件扩展名5. 综合案例 -...
    99+
    2023-01-28
    node.js path path路径模块 path模块
  • Apache中的PHP路径存储:最佳实践是什么?
    在使用Apache作为Web服务器的时候,我们经常需要将PHP脚本与Apache服务器进行集成。在此过程中,Apache服务器需要知道PHP脚本的存储路径才能正确地执行它们。这就引发了一个问题:在Apache中,如何存储PHP路径才能实现...
    99+
    2023-09-06
    存储 apache path
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作