64. 最小路径和

自己做
解:动态规划

class Solution {
public:int minPathSum(vector<vector<int>>& grid) {int m = grid.size();int n = grid[0].size();vector<vector<int>> DP(m,vector<int>(n));DP[0][0] = grid[0][0]; //从(0,0)到(0,0)的路径长for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(i == 0 && j != 0) //对于首行DP[0][j],只可能从左边的DP[0][j - 1]过来DP[i][j] = DP[i][j - 1] + grid[i][j];if(i != 0 && j == 0) //对于首列DP[i][0],只可能从上边的DP[i - 1][0]过来DP[i][j] = DP[i - 1][j] + grid[i][j]; if(i != 0 && j != 0) //其余情况:看哪边好走走哪边(上边或左边)DP[i][j] = min(DP[i - 1][j], DP[i][j - 1]) + grid[i][j]; }}return DP[m - 1][n - 1];}
};
