美文网首页LeetCode
动态规划之路径和作小

动态规划之路径和作小

作者: 秸秆混凝烧结工程师 | 来源:发表于2021-02-23 22:38 被阅读0次

解题思路:

此题是典型的动态规划题目。

状态定义:

设 dpdp 为大小 m \times nm×n 矩阵,其中 dp[i][j]dp[i][j] 的值代表直到走到 (i,j)(i,j) 的最小路径和。

转移方程:

题目要求,只能向右或向下走,换句话说,当前单元格 (i,j)(i,j) 只能从左方单元格 (i-1,j)(i−1,j) 或上方单元格 (i,j-1)(i,j−1) 走到,因此只需要考虑矩阵左边界和上边界。

走到当前单元格 (i,j)(i,j) 的最小路径和 == “从左方单元格 (i-1,j)(i−1,j) 与 从上方单元格 (i,j-1)(i,j−1) 走来的 两个最小路径和中较小的 ” ++ 当前单元格值 grid[i][j]grid[i][j] 。具体分为以下 44 种情况:

当左边和上边都不是矩阵边界时: 即当i \not= 0i

=0, j \not= 0j

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

当只有左边是矩阵边界时: 只能从上面来,即当i = 0, j \not= 0i=0,j

=0时, dp[i][j] = dp[i][j - 1] + grid[i][j]dp[i][j]=dp[i][j−1]+grid[i][j] ;

当只有上边是矩阵边界时: 只能从左面来,即当i \not= 0, j = 0i

=0,j=0时, dp[i][j] = dp[i - 1][j] + grid[i][j]dp[i][j]=dp[i−1][j]+grid[i][j] ;

当左边和上边都是矩阵边界时: 即当i = 0, j = 0i=0,j=0时,其实就是起点, dp[i][j] = grid[i][j]dp[i][j]=grid[i][j];

初始状态:

dpdp 初始化即可,不需要修改初始 00 值。

返回值:

返回 dpdp 矩阵右下角值,即走到终点的最小路径和

作者:jyd

链接:https://leetcode-cn.com/problems/minimum-path-sum/solution/zui-xiao-lu-jing-he-dong-tai-gui-hua-gui-fan-liu-c/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


源码


class Solution:

    def minPathSum(self, grid: [[int]]) -> int:

        for i in range(len(grid)):

            for j in range(len(grid[0])):

                if i == j == 0: continue

                elif i == 0:  grid[i][j] = grid[i][j - 1] + grid[i][j]

                elif j == 0:  grid[i][j] = grid[i - 1][j] + grid[i][j]

                else: grid[i][j] = min(grid[i - 1][j], grid[i][j - 1]) + grid[i][j]

        return grid[-1][-1]

作者:jyd

链接:https://leetcode-cn.com/problems/minimum-path-sum/solution/zui-xiao-lu-jing-he-dong-tai-gui-hua-gui-fan-liu-c/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • 动态规划之路径和作小

    解题思路: 此题是典型的动态规划题目。 状态定义: 设 dpdp 为大小 m \times nm×n 矩阵,其中 ...

  • 最短路径 之 Floyd 算法

    • 最短路径 之 Dijkstra 算法• 最短路径 之 Bellman 算法 Floyd算法是基于一种动态规划的...

  • 动态规划之矩形最短路径和

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

  • 2022-03-31 不同路径

    动态规划:不同路径:初始状态: dp[i][0]=1 dp[0][[j]=1动态规划方程 dp[i][j]=dp...

  • 动态规划 - 路径专题

    1.求最短路径和Given a m x n grid filled with non-negative numbe...

  • 4. 动态规划算法

    1. 动态规划算法总结2. 漫画:什么是动态规划?3.算法之动态规划4. 动态规划-算法

  • 理解动态规划、BFS和DFS

    一、动态规划 找到两点间的最短路径,找最匹配一组点的线,等等,都可能会用动态规划来解决。 参考如何理解动态规划中,...

  • Asynchronous dynamic programming

    本文代码点击这里下载。 动态规划方法 如果节点位于到的最短路径上,那么到的路径也必须是和之间的最短路径。这种“分而...

  • LeetCode之Minimum Path Sum(Kotlin

    问题: 方法:因为限定只能向右或向下,可以使用动态规划,当前点的最小路径和等于(左边点的最小路径和加当前点路径值)...

  • 2018-11-14

    今天学了动态规划一些知识,着重看了一下动态规划之背包算法(主要是0-1算法和部分算法),关于动态规划的问题重点是建...

网友评论

    本文标题:动态规划之路径和作小

    本文链接:https://www.haomeiwen.com/subject/hqadfltx.html