题解 | #矩阵的最小路径和#

矩阵的最小路径和

http://www.nowcoder.com/practice/7d21b6be4c6b429bb92d219341c4f8bb

还是矩阵动态规划,仍然是分析点 (i,j),只能通过(i-1,j)下移或(i,j-1)右移到达。那么令dp(i,j)为到达(ij)最短的路径,有如下关系:
dp(i,j) = min( dp(i, j-1), dp(i-1, j) ) + P(i, j)
其中P(i, j)为点(i,j)的值。
这核心的关系搞清楚了,再看初始条件。右上左下两条边,最短路径都是一条线(只能向右或向下移动!!!),累加计算出dp(0, x) 和 dp(x, 0)

# @param matrix int整型二维数组 the matrix
# @return int整型
#
class Solution:
    def minPathSum(self , matrix ):
        # write code here
        m = len(matrix)
        n = len(matrix[0])
        for i in range(1, n):
            matrix[0][i] += matrix[0][i-1]

        for i in range(1, m):
            matrix[i][0] += matrix[i-1][0]

        for i in range(1, m):
            for j in range(1, n):
                matrix[i][j] += min(matrix[i][j-1], matrix[i-1][j])
        print(matrix)
        return matrix[-1][-1]
全部评论

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务