Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
Example:
Input: [ [1,3,1], [1,5,1], [4,2,1] ] Output: 7 Explanation: Because the path 1→3→1→1→1 minimizes the sum.
============================================================================
是leetcode62 的拓展题。
这个题就是求所经过的路中的数的总和的最小值。和leetcode62的代码是相差不大的,只是自重一些地方修改了。
C++代码:
class Solution { public: int minPathSum(vector<vector<int>>& grid) { int m = grid.size(),n = grid[0].size(); vector<vector<int> > dp(m,vector<int>(n,0)); dp[0][0] = grid[0][0]; for(int i = 1; i < m; i++){ dp[i][0] = dp[i-1][0] + grid[i][0]; //要注意 } for(int j = 1; j < n; j++){ dp[0][j] = dp[0][j-1] + grid[0][j]; //要注意 } for(int i = 1; i < m; i++){ for(int j = 1; j < n; j++){ dp[i][j] = grid[i][j] + min(dp[i-1][j],dp[i][j-1]); //要注意 } } return dp[m-1][n-1]; } };