力扣--动态规划64.最小路径和

思路分析:

  1. 基本思路: 本算法采用动态规划的思想,通过构建一个额外的二维矢量 dp 来存储每个位置的最小路径和。最终目标是求得右下角位置的最小路径和,即整个网格的最小路径和。

  2. 初始化:

    • 初始化矢量的行数和列数,并处理特殊情况,若矢量大小为 1x1,直接返回该元素值作为路径和。
    • 创建二维矢量 dp,其大小与输入矢量相同,用于存储最小路径和的中间结果。
  3. 初始路径和:

    • dp[0][0] 初始化为网格起点的值。
    • 初始化第一列和第一行的路径和,分别累加上方和左侧的路径和。
  4. 状态转移方程:

    • 通过两层嵌套循环遍历网格中的每个位置 (i, j),计算 dp[i][j] 的最小路径和。
    • 使用状态转移方程 dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j],表示当前位置的最小路径和为其上方和左侧最小路径和的较小者,再加上当前位置的值。
  5. 返回结果:

    • 最终返回 dp[n-1][m-1],即右下角位置的最小路径和,代表整个网格的最小路径和。
class Solution {
public:// 定义一个成员函数 minPathSum,接受一个二维矢量 grid 作为输入,返回最小路径和的整数结果int minPathSum(vector<vector<int>>& grid) {// 获取二维矢量的行数和列数int n = grid.size();int m = grid[0].size();// 如果矢量大小为 1x1,直接返回该元素值作为路径和if (n == 1 && m == 1)return grid[0][0];// 创建一个二维矢量 dp 用于存储每个位置的最小路径和vector<vector<int>> dp(n, vector<int>(m, 0));// 初始化 dp[0][0] 为起点的值dp[0][0] = grid[0][0];// 初始化第一列的路径和,每个位置的值等于上方位置的路径和加上当前位置的值for (int i = 1; i < n; i++)dp[i][0] = dp[i - 1][0] + grid[i][0];// 初始化第一行的路径和,每个位置的值等于左侧位置的路径和加上当前位置的值for (int i = 1; i < m; i++)dp[0][i] = dp[0][i - 1] + grid[0][i];// 计算每个位置的最小路径和,状态转移方程为 dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]for (int i = 1; i < n; i++) {for (int j = 1; j < m; j++) {dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];}}// 返回右下角位置的最小路径和,即整个网格的最小路径和return dp[n - 1][m - 1];}
};

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

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

相关文章

软件测试--性能测试实战篇

软件测试--性能测试实战篇 项目介绍和部署1. 轻商城项目介绍1.1 背景1.2 简介2. 项目功能架构3. 项目技术架构4. 熟悉数据库设计5. 轻商城项目搭建5.1 准备工作5.2 项目搭建步骤性能测试需求分析1. 性能测试需求分析1.1 如何获取有效的需求2. 性能测试点的提取2.1 性能测试点的…

基于springboot+vue的精简博客系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

网工内推 | 国企运维,年薪最高30W,RHCE认证优先

01 上海华力微电子有限公司 招聘岗位&#xff1a;系统运维资深/主任工程师 职责描述&#xff1a; 1、负责IT基础设施&#xff08;包括服务器、存储、中间件等系统基础技术平台&#xff09;的设计建设和日常运维管理&#xff1b; 2、负责生产、开发和测试环境的技术支持&#x…

边缘计算网关在智能工业园区中的的应用及其优势-天拓四方

边缘计算网关是一种部署在网络边缘的设备&#xff0c;它具备数据采集、处理、存储和传输等功能。通过集成传感器、执行器、通信模块和计算单元&#xff0c;边缘计算网关能够实现对物联网设备的实时监控和控制&#xff0c;同时优化数据传输效率&#xff0c;降低网络延迟&#xf…

julia语言使用PyCall包调用Python代码及Python包

Julia语言虽然好&#xff0c;但是包管理方面和生态环境感觉还有一点小小的缺陷&#xff0c;但是Julia可以调用Python丰富的包&#xff0c;用起来很方便。 安装PyCall 在安装之前先确认下Julia和Python的版本&#xff0c;我使用的稳定版本的 Julia1.6.7&#xff0c;Python版本是…

基于深度学习的人员指纹身份识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 指纹图像预处理与特征提取 4.2 卷积神经网络架构 4.3 特征编码与匹配 4.4 损失函数与训练 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程…

01:HAL库---时钟

一&#xff1a;前言 我们使用的是STM32F103CT86的型号 1&#xff1a;介绍 时钟在在我们的单片机中非常重要&#xff0c;相当于我们的人类的心脏&#xff1b;简单来说&#xff0c;时钟是具有周期性的脉冲信号&#xff0c;最常用的是占空比50%的方波&#xff1b; 三种不同的时钟…

UE5 UE4 开发常用工具AssetDeveTool

AssetDeveTool工具&#xff0c;支持UE5 5.0-.5.3 UE4 4.26/4.27 下载链接&#xff1a; 面包多 https://mbd.pub/o/bread/ZZubkphu 工坊&#xff1a; https://gf.bilibili.com/item/detail/1104960041 包含功能&#xff1a; 自动化批量展UV功能 快速选择功能 自动化批量减面功能…

Docker容器化解决方案

什么是Docker&#xff1f; Docker是一个构建在LXC之上&#xff0c;基于进程容器的轻量级VM解决方案&#xff0c;实现了一种应用程序级别的资源隔离及配额。Docker起源于PaaS提供商dotCloud 基于go语言开发&#xff0c;遵从Apache2.0开源协议。 Docker 自开源后受到广泛的关注和…

07 系统的线性时不变特性

各位看官&#xff0c;大家好&#xff01;本讲为《数字信号处理理论篇》07 系统的线性时不变特性。&#xff08;特别提示&#xff1a;课程内容为由浅入深的特性&#xff0c;而且前后对照&#xff0c;不要跳跃观看&#xff0c;请按照文章或视频顺序进行观看。 从本讲开始开始为大…

python | Python 中检查一个数字是否是三态数

本文来源公众号“python”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;Python 中检查一个数字是否是三态数 在数学中&#xff0c;三态数&#xff08;Triangular Number&#xff09;是一种特殊的数列&#xff0c;它是由自然数按…

O2O:Online Decision Transformer(ODT)

ICML 2022 paper Introduction 利用Transformer对强化学习进行序列建模在离线强化学习中展露头角&#xff0c;但是无法避免的是这种方法受限于离线数据的质量&#xff0c;因此本文将其结合到online的在线微调过程&#xff0c;进而形成本文ODT。为了解决从offline到online过程…