leetcode.array--64. Minimum Path Sum

来源:互联网 发布:人工智能与自动控制 编辑:程序博客网 时间:2024/05/17 02:18

题目:64. Minimum Path Sum

题目链接:https://leetcode.com/problems/minimum-path-sum/description/

给定一个非负整数的二维矩阵,起点在左上方终点在右下方,找到从起点到终点的一条路径,使得通过该路径的花费最小,返回该路径上所有数字的和。

同样是一个dp,设dp[i][j]为到达grid[i-1][j-1]的最小开销,则有dp[i][j]=grid[i-1][j-1]+min(dp[i][j-1],dp[i-1][j])。

Python:

class Solution(object):    def minPathSum(self, grid):        """        :type grid: List[List[int]]        :rtype: int        """        rows=len(grid)        columns=len(grid[0])        inf=0x7fffffff        dp=[[inf for col in range(columns+1)] for row in range(rows+1)]        dp[1][1]=grid[0][0]        for i in range(1,rows+1):            for j in range(1,columns+1):                if i==1 and j==1:                    continue                dp[i][j]=grid[i-1][j-1]+min(dp[i][j-1],dp[i-1][j])        return dp[rows][columns]