美文网首页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)

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

    相关文章

      网友评论

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

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