class Solution { public: int minPathSum(vector<vector<int>>& grid) { int row=grid.size(); int col=grid[0].size(); int N=1000; int D[N][N]; D[0][0]=grid[0][0]; for(int j=1;j<col;j++){ D[0][j]=D[0][j-1]+grid[0][j]; } for(int i=1;i<row;i++){ D[i][0]=D[i-1][0]+grid[i][0]; } for(int i=1;i<row;i++){ for(int j=1;j<col;j++){ D[i][j]=min(D[i][j-1],D[i-1][j])+grid[i][j]; } } return D[row-1][col-1]; } };
补充一个python版本:
1 class Solution: 2 def minPathSum(self, grid: 'List[List[int]]') -> 'int': 3 m = len(grid) 4 n = len(grid[0]) 5 dp =[[0 for col in range(n)] for row in range(m)] 6 dp[0][0] = grid[0][0] 7 for i in range(1,m): 8 dp[i][0] = dp[i-1][0] + grid[i][0] 9 10 for j in range(1,n): 11 dp[0][j] = dp[0][j-1] + grid[0][j] 12 13 for i in range(1,m): 14 for j in range(1,n): 15 dp[i][j] = min(dp[i][j-1],dp[i-1][j]) + grid[i][j] 16 return dp[m-1][n-1]