「动态规划」最小路径和

力扣原题链接,点击跳转。

有一个m×n的网格grid,网格中有数字。请找出一条从左上角到右下角的路径,使得路径上的值的和最小。每次只能向下或向右走。

我们用动态规划的思想来解决这个问题。首先创建dp表。先确定状态表示,我们用dp[i][j]表示从左上角到(i,j)的最小路径和。接着推导状态转移方程,考虑到达(i,j)最近的一步,只能从(i-1,j)或(i,j-1)出发才能到达(i,j),故有dp[i][j]=min(dp[i-1][j],dp[i][j-1])+grid[i][j]。

考虑初始化的问题,由于dp[i][j]只和上边和左边的值相关,所以需要初始化最上面一行和最左边一列。

? ? ? ? ?
?
?

我们在最上面和最左边多加上一行一列。

* * * * * *
* ? ? ? ? ?
* ?
* ?

左上角的?的值应为grid这个位置的值。为了满足状态转移方程,就把这个?上边和左边的位置初始化成0。

* 0 * * * *
0 ? ? ? ? ?
* ?
* ?

接着考虑其他?的值。为了让求min(dp[i-1][j],dp[i][j-1])时,?的值不会影响结果,故*位置应全部初始化为+∞。注意此时dp表和grid的对应关系:dp表的(i,j)对应grid的(i-1,j-1)。由于dp表(i,j)位置的值只和左边和上边的值相关,故应从上往下填每一行,每一行从左往右填表,确保填(i,j)时,它上边和左边的值已经准备好了。最后应返回dp[m][n],对应grid的(m-1,n-1)。

class Solution
{
public:int minPathSum(vector<vector<int>>& grid){// 创建dp表int m = grid.size(), n = grid[0].size();vector<vector<int>> dp(m + 1, vector<int>(n + 1, INT_MAX));// 初始化dp[0][1] = dp[1][0] = 0;// 填表for (int i = 1; i <= m; i++)for (int j = 1; j <= n; j++)dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i - 1][j - 1];return dp[m][n];}
};

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

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

相关文章

32.strace/ltrace命令及其使用

文章目录 strace基本介绍strace命令格式及常用选项ltrace介绍ltrace命令格式及其常用选项 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; strace基本介绍 strace 是一个强大的工具&#xff0c;用于跟踪程序执行时的系统调用和接收到的信…

Python 点云处理-点云体素滤波

点云体素滤波 一、介绍1.1 概念1.2 实现步骤1.3 优、缺点1.4 参数设置二、代码示例三、结果示例一、介绍 1.1 概念 点云体素滤波(Voxel Grid Filter)是一种常用的点云滤波方法,用于将稠密的点云数据进行降采样。该方法将点云空间分割成均匀的体素网格,每个体素格子内只保留…

淘宝订单系统ERP中如何接入平台订单信息?(订单API)

淘宝开放平台中有交易API&#xff0c;里面有各种关于交易的API接口。但是申报应用权限的审核流程严格又漫长。不少公司费时费力的申请后&#xff0c;结果还是没有审批下来。 调用淘宝自定义接口custom&#xff0c;可以实现淘宝开放平台API的调用。技术人员会根据您需要的接口做…

基于SpringBoot的网盘系统设计与实现

第1章 绪论... 1 1.1 研究背景与意义... 1 1.1.1 研究背景... 1 1.1.1 研究意义... 1 1.2 国内外研究现状... 2 1.2.1 国内研究现状... 2 1.2.2 国外研究现状... 3 1.3 论文组织架构... 4 第2章 关键技术介绍... 5 2.1 SpringBoot. 5 2.2 MySQL数据库... 5 2.3 MVC架…

Java进阶学习笔记2——static修饰成员变量

static&#xff1a; 叫静态&#xff0c;可以修饰成员变量、成员方法。 成员变量按照有无static修饰&#xff0c;分为两种&#xff1a; 类变量&#xff1a;有static修饰&#xff0c;属于类&#xff0c;在计算机中只有一份&#xff0c;会被类的全部对象共享。静态成员变量。 实…

【LeetCode】30.串联所有单词的子串

串联所有单词的子串 题目描述&#xff1a; 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如&#xff0c;如果 words ["ab","cd",&qu…

【Linux】使用自定义协议实现网络版计算器

目录 实现思路 主要模块 计算业务类 类成员 方法 运算处理 错误处理 守护进程类 代码 客户端程序 服务端类 成员变量 构造函数 静态成员函数 成员函数 服务端程序 主函数 (main) 请求处理函数 (HandlerRequest) 报头类 常量定义 编码和解码函数 请求和响应…

基金/证券项目如何进行非交易日数据补全(实战)

一些大数据开发的项目&#xff0c;特别是基金/证券公司的项目&#xff0c;都经常会涉及到交易日与非交易日的概念。 如果要让你对一张交易日跑批的主表&#xff0c;怎么去补全非交易日的数据呢&#xff1f; 在遇到这种情况的时候&#xff0c;我们要去怎么处理&#xff1f;来&…

webSocket+Node+Js实现在线聊天(包含所有代码)

这篇文章主要介绍了如何使用 webSocket、Node 和 Js 实现在线聊天功能。 重要亮点 &#x1f4bb; 技术选型&#xff1a;使用 Node.js 搭建服务器&#xff0c;利用 Express 框架和 Socket.io 库实现 WebSocket 通信。 &#x1f4c4; 实现思路&#xff1a;通过建立数组存储聊天…

掌握RESTful API:从入门到精通,全面解析Web开发的基石!

在现代Web开发中&#xff0c;API&#xff08;应用程序编程接口&#xff09;已经成为不同系统之间通信的重要手段。其中&#xff0c;RESTful API是一种基于HTTP协议的设计风格&#xff0c;它简洁、易用且高效。作为一个资深的技术人员&#xff0c;本文将全面详细地介绍RESTful A…

等保建设:打造MySQL数据库审计系统

1、建设目标 在等级保护三级->应用安全->安全审计中强制需要有审计平台(满足对操作系统、数据库、网络设备的审计&#xff0c;在条件不允许的情况下&#xff0c;至少要使用数据库审计) 数据库审计服务符合等级保护三级标准&#xff0c;帮助您满足合规性要求&#xff0c;…

软考之信息系统管理知识点(2)

计算机系统中提高并行性的措施多种多样&#xff0c;就其基本思想而言&#xff0c;可归纳为如下3条途径&#xff1a; &#xff08;1&#xff09;时间重叠。在并行性概念中引入时间因素&#xff0c;即多个处理过程在时间上相互错开&#xff0c;轮流重叠地使用同一套硬件设备的各个…

VsCode CMake调试QT无法查看源码问题处理

遇到的问题 当我们在VsCode使用CMake来调试QT程序时&#xff0c;想F11进入到QT源码时&#xff0c;发现进不去&#xff0c;无法查看源码。 原因 这种情况一般都是安装目录下没有pdb文件导致的。 PDB文件&#xff1a;是一个包含调试信息的数据库&#xff0c;它由编译器和链接器…

用UDP写一个回显服务器和一个字典服务器

回显服务器 操作系统提供了一些网络通信的api&#xff08;socket&#xff09;。 如&#xff1a; 回显服务器&#xff1a;请求是啥&#xff1f;响应就是啥。 一个正常的服务器要做三件事情&#xff1a; 1. 读取请求并解析。 2. 根据请求计算响应。 3. 把响应写回给客户端。…

settimeout和setinterval有什么区别

settimeout和setinterval的区别&#xff1a; 1、触发时间&#xff0c;settimeout是一次性的&#xff0c;它在设定延迟时间之后执行一次函数&#xff0c;而setinterval是重复性的&#xff0c;它会以设定的时间间隔重复执行函数&#xff1b;2、执行次数&#xff0c;settimeout只执…

【ETAS CP AUTOSAR工具链】ARXML文件详解

本篇文章首先对ARXML这种文件格式做了一个概述&#xff0c;叙述了这种标签语言的基本语法&#xff08;如果您用HTML做过网页&#xff0c;那么这种格式您一定不会陌生&#xff09;&#xff0c;然后对ARXML文件都会包含的一些基本信息做了详细的解读&#xff0c;最后基于使用ISOL…

Android:使用Kotlin搭建MVP架构模式

一、简介Android MVP架构模式 MVP全称&#xff1a;Model、View、Presenter&#xff1b; View&#xff1a;负责视图部分展示Model&#xff1a;负责数据的请求、解析、过滤等数据层操作。Presenter&#xff1a;View和Model交互的桥梁。对应MVC中的C&#xff08;controller&#x…

01.爬虫---初识网络爬虫

01.初识网络爬虫 1.什么是网络爬虫2.网络爬虫的类型3.网络爬虫的工作原理4.网络爬虫的应用场景5.网络爬虫的挑战与应对策略6.爬虫的合法性总结 1.什么是网络爬虫 网络爬虫&#xff0c;亦称网络蜘蛛或网络机器人&#xff0c;是一种能够自动地、系统地浏览和收集互联网上信息的程…

路由聚合和VRRP技术

实验拓扑图&#xff1a; 实验需求 1、内网IP地址使用172.16.0.0/16 2、SW1和SW2之间互为备份&#xff1b; 3、VRRP/stp/vlan/eth-trunk均使用&#xff1b; 4、所有pc均通过DHCP获取IP地址&#xff1b; 5、ISP只配置IP地址&#xff1b; 6、所有电脑可以正常访问ISP路由器环…

【学习笔记】Windows GDI绘图(五)图形路径GraphicsPath详解(上)

文章目录 图形路径GraphicsPath填充模式FillMode构造函数GraphicsPath()GraphicsPath(FillMode)GraphicsPath(Point[],Byte[])和GraphicsPath(PointF[], Byte[])GraphicsPath(Point[], Byte[], FillMode)和GraphicsPath(PointF[], Byte[], FillMode)PathPointType 属性FillMode…