力扣 题目64- 最小路径和

题目

题解

力扣 题目62- 不同路径力扣 题目63- 不同路径II中采用了取每个方块的的左块次数和上块次数 那么我们这次可以改造

原本保存次数的地方 这次应当放入到该位置的最小值 这样最后一格只要比较一下大小加上自己即可

别忘了 上边和左边特殊处理

代码

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 
 5 class Solution {
 6 public:
 7     int minPathSum(vector<vector<int>>& grid) {
 8         int m = grid.size();
 9         int n = grid[0].size();
10         vector<vector<int>> dp(m, vector<int>(n, 0));
11         dp[0][0] = grid[0][0];
12         for (int i = 1; i < m; i++) {
13             dp[i][0] = dp[i-1][0]+ grid[i][0];
14            // cout << "dp[" <<i<<"][0]="<<dp[i][0] << endl;
15         } 
16         for (int j = 1; j < n; j++) {
17             dp[0][j] = dp[0][j-1] + grid[0][j];
18             //cout << "dp[0]["<<j<<"] = " << dp[0][j] << endl;
19         }
20 
21         for (int i = 1; i < m; i++) {
22             for (int j = 1; j < n; j++) {
23                 dp[i][j] = min(dp[i - 1][j] , dp[i][j - 1])+ grid[i][j];
24                //cout << "dp["<<i<<"]["<<j<<"] = " << dp[i][j] << endl;
25             }
26         }
27         return dp[m - 1][n - 1];
28     }
29 };
30 int main() {
31     Solution sol;
32     vector<vector<int>>grid = { {1}};
33     int result= sol.minPathSum(grid);
34     cout << result << endl;
35 
36 }
View Code

 

posted @ 2022-05-29 13:52  无聊的阿库娅  阅读(13)  评论(0编辑  收藏  举报