【动态规划专栏】专题二:路径问题--------5.最小路径和

简介: 【动态规划专栏】专题二:路径问题--------5.最小路径和


题目来源

本题来源为:

Leetcode LCR 099. 最小路径和

题目描述

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:一个机器人每次只能向下或者向右移动一步。

算法原理

1.状态表示

经验+题目要求

对于本题而言就是:

dp[i][j]表示:走到[i,j]位置的时候,最小路径和

2.状态转移方程

根据题目要求,最近的一步,划分问题,分两种情况:

因此状态方程为:

dp[i][j]=min(dp[i-1][j],dp[i][j-1])+grid[i-1][j-1];

3.初始化

注意两点:

4.填表顺序

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

5.返回值

返回dp[m][n];

代码实现

动态规划的代码基本就是固定的四步:

1.创建dp表
2.初始化
3.填表
4.返回值

本题完整代码实现:

class Solution 
{
public:
    int minPathSum(vector<vector<int>>& grid) 
    {
        int m=grid.size(),n=grid[0].size();
        //创建dp表
        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];
    }
};

时间复杂度:O(MN)
空间复杂度:O(M
N)

相关文章
|
3天前
|
算法
【动态规划专栏】专题三:简单多状态dp--------2.打家劫舍II
【动态规划专栏】专题三:简单多状态dp--------2.打家劫舍II
33 0
|
3天前
|
算法 机器人
【动态规划专栏】专题二:路径问题--------1.不同路径
【动态规划专栏】专题二:路径问题--------1.不同路径
27 1
|
3天前
|
算法
【动态规划专栏】专题三:简单多状态dp--------3.删除并获得点数
【动态规划专栏】专题三:简单多状态dp--------3.删除并获得点数
32 1
|
3天前
|
算法
【动态规划专栏】专题二:路径问题--------6.地下城游戏
【动态规划专栏】专题二:路径问题--------6.地下城游戏
24 0
|
3天前
|
算法 机器人
【动态规划专栏】专题二:路径问题--------2.不同路径II
【动态规划专栏】专题二:路径问题--------2.不同路径II
25 0
|
3天前
|
测试技术
剑指offer12矩阵中的路径刷题打卡
剑指offer12矩阵中的路径刷题打卡
23 0
|
7月前
蓝桥杯必备——动态规划“路径问题”以及这种题的小结(二)
蓝桥杯必备——动态规划“路径问题”以及这种题的小结
|
7月前
|
Java
蓝桥杯必备——动态规划“路径问题”以及这种题的小结(一)
蓝桥杯必备——动态规划“路径问题”以及这种题的小结
|
11月前
洛谷----皮特的烟(递归)
洛谷----皮特的烟(递归)
|
11月前
|
算法
初学算法之递归---爬楼梯
初学算法之递归---爬楼梯