当前位置: 首页 > news >正文

DP学习第七篇之最小路径和

DP学习第七篇之最小路径和

64. 最小路径和 - 力扣(LeetCode)

请添加图片描述

一.题目解析

请添加图片描述

和第五篇礼物的最大价值和类似

二. 算法原理

  1. 状态表示

    tips: 经验+题目要求。以[i,j]位置为结尾,。。。

dp[i][j]: 到达[i, j]位置时,路径和最小

  1. 状态转移方程

    tips: 用之前或之后的状态,推导出dp[i]的值。根据最近的一步,来划分问题

到达[i, j]位置之前:

  • 从[i - 1, j]位置向下走一步,到[i, j]

  • 从[i, j - 1]位置向右走一步,到[i, j]

    即:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + g[i][j]

  1. 初始化

    tips: 保证填表的时候不越界。增加虚拟节点

请添加图片描述

  • 虚拟节点里面的值,要保证后面填表是正确的

根据状态转移方程,要保证填表时的正确性,对虚拟节点进行赋值

  • 下标的映射关系

dp表映射到原矩阵:横纵坐标-1

  1. 填表顺序

从上往下填写每一行,每一行从左往右

  1. 返回值

题目要求:到达右下角的路径和

即:return dp[m][n]

三. 编写代码

class Solution {
public:
    int minPathSum(vector<vector<int>>& g) {
        //1.创建dp表
        //2.初始化
        //3.填表
        //4.返回值
        int m = g.size(), n =g[0].size();
        vector<vector<int>> dp(m + 1, vector<int>(n + 1, INT_MAX));

        dp[0][1] = 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]) + g[i - 1][j - 1];
        
        return dp[m][n];
    }
};

    🦀🦀观看~~

相关文章:

  • 安宝特方案 | 电力行业的“智能之眼”,AR重新定义高效运维!
  • 计算机网络:应用层 —— 电子邮件
  • 微信小程序组件封装与复用:提升开发效率
  • Docker 常用命令大全
  • FastAPI高级特性(二):错误处理、中间件与应用生命周期
  • 美国国防部(DoD)SysML v2迁移指南项目
  • PHP403问题
  • OpenGL ES -> GLSurfaceView绘制点、线、三角形、正方形、圆(索引法绘制)
  • 力扣 3248. 矩阵中的蛇(Java实现)
  • 【HDLbits--Comb组合逻辑】
  • HAProxy- https、四层负载实现与 负载均衡关键技术
  • JavaScript系列(87)--Webpack 高级配置详解
  • PXE 安装ubuntu22.04自动判断UEFI或者Legacy引导
  • 第九节: Vue 3 中的 provide 与 inject:优雅的跨组件通信
  • Apache Doris 索引的全面剖析与使用指南
  • 【WSL2】 Ubuntu20.04 GUI图形化界面 VcXsrv ROS noetic Vscode 主机代理 配置
  • 检查SSH安全配置-关于“MaxStartups参数”
  • django filter 不等于
  • 面试基础--线程生命周期、线程池(ThreadPoolExecutor 工作原理)
  • vue3除了pinia/vuex的其他通讯方式还有那些
  • 白城网站建设公司/免费行情网站
  • 国内外网站开发技术/做网络销售如何找客户
  • 有主体新增网站/谷歌账号注册入口官网
  • 企业门户网站开发代码/大连seo网站推广
  • 优普南通网站建设/收录查询工具
  • 四川省住房和建设厅官方网站/网络营销产品推广方案