求到达右下角的路径,使得路径上数的和最小。比较简单。每一个位置你选择从上面来更小还是左边来更小就好。
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int m = grid.size(), n = grid[0].size();
int d[m][n];
for (int i = 0; i < m; ++i)
{
for (int j = 0; j < n; ++j)
{
if(i == 0 && j == 0)d[i][j] = grid[0][0];
else if (i == 0 && j != 0)
{
d[i][j] = d[i][j - 1] + grid[i][j];
}
else if (j == 0 && i != 0)
{
d[i][j] = d[i - 1][j] + grid[i][j];
}
else {
d[i][j] = min(d[i - 1][j], d[i][j - 1]) + grid[i][j];
}
}
}
return d[m - 1][n - 1];
}
};