class Solution { public: int minPathSum(vector<vector<int> >& grid) { // write code here const int m = grid.size(); const int n = grid[0].size(); // =================状态定义======================= vector<vector<int>>dp(m,vector<int>(n)); // ===================初始化============================ dp[0][0] = grid[0][0]; for(int i =1;i<m;i++) { dp[i][0] = grid[i][0] + dp[i-1][0]; } for(int i =1;i<n;i++) { dp[0][i] = grid[0][i] + dp[0][i-1]; } // ===================状态递归=========================== for(int i =1;i<m; i++) { for(int j =1;j<n;j++) { dp[i][j] = min(dp[i-1][j],dp[i][j-1]) + grid[i][j]; } } //===================返回结果=========================== return dp[m-1][n-1]; } };