题意:只能向下或者向右,求路径最短。
思路:简单DP。
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int m = grid.size();
int n = grid[0].size();
vector<vector<int> > dis = grid;
for(int i = 0; i < m; ++ i) {
for(int j = 0; j < n; ++ j) {
dis[i][j] = 9999999;
}
}
dis[0][0] = grid[0][0];
for(int i = 1; i < m; ++ i) {
dis[i][0] = dis[i - 1][0] + grid[i][0];
}
for(int i = 1; i < n; ++ i) {
dis[0][i] = dis[0][i - 1] + grid[0][i];
}
for(int i = 1; i < m; i ++ ){
for(int j = 1; j < n; j ++) {
int min = 0;
if(dis[i - 1][j] > dis[i][j - 1]) {
min = dis[i][j - 1];
}
else min = dis[i - 1][j];
dis[i][j] = grid[i][j] + min;
}
}
return dis[m - 1][n - 1];
}
};

本文介绍了一个简单的动态规划(DP)算法实现,用于解决在一个只能向下或向右移动的网格中寻找从起点到终点的最短路径问题。通过逐步填充距离矩阵来找到最优解。
2709

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



