题目:
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
class Solution {
public:
//DP
int minPathSum(vector<vector<int> > &grid) {
int m = grid.size();
int n = grid[0].size();
if(m == 0 || n == 0)
return 0;
//初始化
for(int j = 1; j < n; j++)
grid[0][j] += grid[0][j-1];
for(int i = 1; i < m; i++)
grid[i][0] += grid[i-1][0];
for(int i = 1; i < m; i++)
for(int j = 1; j < n; j++)
grid[i][j] += min(grid[i][j-1], grid[i-1][j]);
return grid[m-1][n-1];
}
private:
int min(int &a, int &b) {
return a < b? a : b;
}
};
最小路径和问题解析
本文介绍了一个经典的算法问题——寻找二维网格中从左上角到右下角的最小路径和。通过动态规划的方法解决了该问题,并给出了详细的实现过程。

1127

被折叠的 条评论
为什么被折叠?



