
1 /* 2 * @Author: yaodaoteng 3 * @Date: 2020-11-27 14:03:37 4 * @LastEditors: yaodaoteng 5 * @LastEditTime: 2020-11-27 14:10:53 6 * @FilePath: \git\leetcode\64.最小路径和.cpp 7 */ 8 /* 9 * @lc app=leetcode.cn id=64 lang=cpp 10 * 11 * [64] 最小路径和 12 */ 13 14 // @lc code=start 15 class Solution { 16 public: 17 18 //简单dp,思路和63差不多 19 int minPathSum(vector<vector<int>>& grid) { 20 int m = grid.size(); 21 int n = grid[0].size();//求列数 22 if(m==1&&n==1) 23 return grid[0][0]; 24 vector<vector<int>> dp(m, vector<int>(n, 0)); //二维数组初始化 25 dp[0][0] = grid[0][0]; 26 for (int i = 1; i < m;i++) 27 dp[i][0] = dp[i - 1][0] + grid[i][0]; 28 for (int j = 1; j < n;j++) 29 dp[0][j] = dp[0][j - 1] + grid[0][j]; 30 31 for (int i = 1; i < m;i++){ 32 for (int j = 1; j < n;j++){ 33 dp[i][j] = grid[i][j] + min(dp[i - 1][j], dp[i][j - 1]); 34 } 35 } 36 return dp[m - 1][n - 1]; 37 } 38 }; 39 // @lc code=end
浙公网安备 33010602011771号