题目:
https://leetcode-cn.com/problems/minimum-path-sum/
题意:
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
思路:
简单动态规划,状态转移方程:
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];
}
};