LeetCode 64 最小路径和

题目:

https://leetcode-cn.com/problems/minimum-path-sum/

题意:

给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

思路:

简单动态规划,状态转移方程:
dp[i][j]=val[i][j]+min(dp[i1][j],dp[i][j1])dp[i][j] = val[i][j] + min(dp[i-1][j], dp[i][j-1])dp[i][j]=val[i][j]+min(dp[i−1][j],dp[i][j−1])

代码:

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int n = grid.size(), m = grid[0].size();

        for(int i = 0; i < n; i++) {
            for(int j = 0; j < m; j++) {
                int minval = INT_MAX;
                if(i-1 >= 0) {
                    minval = min(minval, grid[i-1][j]);
                }
                if(j-1 >= 0) {
                    minval = min(minval, grid[i][j-1]);
                }
                if(!(i == 0 && j== 0)) {
                    grid[i][j] += minval;
                }
            }
        }
        
        return grid[n-1][m-1];
    }
};
上一篇:【Python9】文件打开关闭读写、文件定位、自动关闭文件


下一篇:P6033 Ryoku 的探索 (基环树)