LeetCode 2304. 网格中的最小路径代价(动态规划)

文章目录

    • 1. 题目
    • 2. 解题

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-path-cost-in-a-grid
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • dp[i][j] 表示到达 (i, j) 时的最小代价
class Solution {
public:int minPathCost(vector<vector<int>>& grid, vector<vector<int>>& moveCost) {int m = grid.size(), n = grid[0].size();vector<vector<int>> dp(m, vector<int>(n, INT_MAX));for(int j = 0; j < n; ++j)dp[0][j] = grid[0][j];for(int i = 1; i < m; ++i){for(int j = 0; j < n; ++j){for(int k = 0; k < n; ++k){dp[i][j] = min(dp[i][j], dp[i-1][k]+moveCost[grid[i-1][k]][j]+grid[i][j]);}}}return *min_element(dp.back().begin(), dp.back().end());}
};

272 ms 78.5 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 2305. 公平分发饼干(DFS)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 cookies &#xff0c;其中 cookies[i] 表示在第 i 个零食包中的饼干数量。 另给你一个整数 k 表示等待分发零食包的孩子数量&#xff0c;所有 零食包都需要分发。 在同一个零食包中的所有饼干都必须分发给同一个孩子&#xff…

三、Web服务器——HTTP协议 Response对象 ServletContext对象 学习笔记

今日内容 1. HTTP协议&#xff1a;响应消息 2. Response对象 3. ServletContext对象HTTP协议&#xff1a; 1. 请求消息&#xff1a;客户端发送给服务器端的数据* 数据格式&#xff1a;1. 请求行2. 请求头3. 请求空行4. 请求体 2. 响应消息&#xff1a;服务器端发送给客户端的…

LeetCode 2309. 兼具大小写的最好英文字母

文章目录1. 题目2. 解题1. 题目 给你一个由英文字母组成的字符串 s &#xff0c;请你找出并返回 s 中的 最好 英文字母。 返回的字母必须为大写形式。如果不存在满足条件的字母&#xff0c;则返回一个空字符串。 最好 英文字母的大写和小写形式必须 都 在 s 中出现。 英文字…

Java——标签组件:JLabel

使用一个标签 import java.awt.Color; import java.awt.Dimension; import java.awt.Point;import javax.swing.JFrame; import javax.swing.JLabel;// // File Name : JFrame_demo //------------------------------------------------------------------------------ /…

四、Web服务器——Session Cookie JSP入门 学习笔记

今日内容 1. 会话技术1. Cookie2. Session 2. JSP&#xff1a;入门学习会话技术 1. 会话&#xff1a;一次会话中包含多次请求和响应。* 一次会话&#xff1a;浏览器第一次给服务器资源发送请求&#xff0c;会话建立&#xff0c;直到有一方断开为止 2. 功能&#xff1a;在一次…

LeetCode 2310. 个位数字为 K 的整数之和(枚举)

文章目录1. 题目2. 解题1. 题目 给你两个整数 num 和 k &#xff0c;考虑具有以下属性的正整数多重集&#xff1a; 每个整数个位数字都是 k 。所有整数之和是 num 。 返回该多重集的最小大小&#xff0c;如果不存在这样的多重集&#xff0c;返回 -1 。 注意&#xff1a; 多…

五、Web服务器——MVC开发模式 EL表达式 JSTL 学习笔记

今日内容 1. JSP:1. 指令2. 注释3. 内置对象2. MVC开发模式 3. EL表达式 4. JSTL标签 5. 三层架构JSP: 1. 指令* 作用&#xff1a;用于配置JSP页面&#xff0c;导入资源文件* 格式&#xff1a;<% 指令名称 属性名1属性值1 属性名2属性值2 ... %>* 分类&#xff1a;1. p…

六、Web服务器——FilterListener 学习笔记

今日内容 1. Filter&#xff1a;过滤器 2. Listener&#xff1a;监听器Filter&#xff1a;过滤器 1. 概念&#xff1a;* 生活中的过滤器&#xff1a;净水器,空气净化器&#xff0c;土匪、* web中的过滤器&#xff1a;当访问服务器的资源时&#xff0c;过滤器可以将请求拦截下来…

七、Web服务器——Junit单元测试 反射 注解学习笔记

今日内容 1. Junit单元测试 2. 反射 3. 注解Junit单元测试&#xff1a; * 测试分类&#xff1a;1. 黑盒测试&#xff1a;不需要写代码&#xff0c;给输入值&#xff0c;看程序是否能够输出期望的值。2. 白盒测试&#xff1a;需要写代码的。关注程序具体的执行流程。* Junit使…

第一个React Web应用程序

learn from 《React全家桶&#xff1a;前端开发与实例详解》 https://zh-hans.reactjs.org/tutorial/tutorial.html https://zh-hans.reactjs.org/docs/create-a-new-react-app.html#create-react-app 安装 Node.js安装 npm install -g live-server&#xff0c;配置环境变量 p…

一、第一个注解的 SpringMVC 程序

ch01-hello-springmvc:第一个注解的springmvc项目 所谓 SpringMVC 的注解式开发是指&#xff0c;在代码中通过对类与方法的注解&#xff0c;便可完成处理器 在 springmvc 容器的注册。注解式开发是重点。 需求&#xff1a;用户再页面发起一个请求&#xff0c;请求交给spring…

二、SpringMVC 注解式开发学习笔记

1、RequestMapping 定义请求规则 通过RequestMapping 注解可以定义处理器对于请求的映射规则。该注解可以注解在方法上&#xff0c;也可以注解在类上&#xff0c;但意义是不同的。value 属性值常以“/”开始。 RequestMapping 的 value 属性用于定义所匹配请求的 URI。但对于注…

LeetCode 2315. 统计星号(字符串)

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s &#xff0c;每 两个 连续竖线 | 为 一对 。 换言之&#xff0c;第一个和第二个 | 为一对&#xff0c;第三个和第四个 | 为一对&#xff0c;以此类推。 请你返回 不在 竖线对之间&#xff0c;s 中 * 的数目。 注意&#xff…

PyCharm集成Anaconda3环境下安装 腾讯优图报错 ERROR: Could not install packages due to an EnvironmentError

一、报错截图如下&#xff1a; ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: ‘C:\Users\Zep\Python_sdk-master.zip’ 我首先是从官网下载了Python_sdk&#xff0c;然后直接把Python_sdk文件夹放在了Anaconda3的文…

LeetCode 2319. 判断矩阵是否是一个 X 矩阵

文章目录1. 题目2. 解题1. 题目 如果一个正方形矩阵满足下述 全部 条件&#xff0c;则称之为一个 X 矩阵 &#xff1a; 矩阵对角线上的所有元素都 不是 0矩阵中所有其他元素都是 0 给你一个大小为 n x n 的二维整数数组 grid &#xff0c;表示一个正方形矩阵。 如果 grid 是…

三、Java Web中出现的一些乱码问题总结(详解)

一、response.getWriter().write(&#xff09;和 response.getWriter().print(&#xff09;的区别 response.getWriter()返回的是PrintWriter&#xff0c;这是一个打印输出流 response.getWriter().write(&#xff09;和 response.getWriter().print(&#xff09;是响应给客户…

LeetCode 2325. 解密消息(map)

文章目录1. 题目2. 解题1. 题目 给你字符串 key 和 message &#xff0c;分别表示一个加密密钥和一段加密消息。 解密 message 的步骤如下&#xff1a; 使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。将替换表与普通英文字母表对齐&#xff0c;形…

结对项目——最大子数组

求数组中最大子数组的和 一、程序要求 1、返回一个整数数组中最大子数组的和&#xff1b; 2、输入一个整数数组&#xff0c;数组中有正数也有负数&#xff1b; 3、数组中连续的一个或多个整数组成一个子数组&#xff0c;每个子数组都有一个和&#xff1b; 4、求所有子数组的和的…

python的GUI编程和tkinter学习笔记——第一个GUI程序

一、第一个GUI程序 from tkinter import * from tkinter import messagebox# 创建窗口 root Tk()btn01 Button(root) btn01["text"] "点我就送花"btn01.pack()def songhua(e): # e就是事件对象messagebox.showinfo("Message","送你一朵…

LeetCode 2331. 计算布尔二叉树的值(树的遍历)

文章目录1. 题目2. 解题1. 题目 给你一棵 完整二叉树 的根&#xff0c;这棵树有以下特征&#xff1a; 叶子节点 要么值为 0 要么值为 1 &#xff0c;其中 0 表示 False &#xff0c;1 表示 True 。非叶子节点 要么值为 2 要么值为 3 &#xff0c;其中 2 表示逻辑或 OR &#…