c_cpp [dp] [path] [matrix]具有非负数的2d矩阵/网格中的最小路径和。找到从左上角到右下角的路径,最小化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp [dp] [path] [matrix]具有非负数的2d矩阵/网格中的最小路径和。找到从左上角到右下角的路径,最小化相关的知识,希望对你有一定的参考价值。
// DP, space O(M*N)
int minPathSum(vector<vector<int>> &grid) {
if(grid.empty()) return 0;
int m = grid.size(), n = grid[0].size();
vector<vector<int>> sum(m, vector<int>(n, 0));
sum[0][0] = grid[0][0];
for(int c=1; c<n; c++) sum[0][c] = sum[0][c-1] + grid[0][c];
for(int r=1; r<m; r++) sum[r][0] = sum[r-1][0] + grid[r][0];
for(int r=1; r<m; r++) {
for(int c=1; c<n; c++) {
sum[r][c] = grid[r][c] + min(sum[r-1][c], sum[r][c-1]);
}
}
return sum[m-1][n-1];
}
// DP, space O(N)
int minPathSum(vector<vector<int>>& grid) {
int M = grid.size(), N = grid[0].size();
vector<int> row(N, 0);
row[0] = grid[0][0]; // gist
for(int c=1; c<N; c++)
row[c] = row[c-1] + grid[0][c];
for(int r=1; r<M; r++) {
row[0] += grid[r][0]; // gist
for(int c=1; c<N; c++) {
row[c] = min(row[c], row[c-1]) + grid[r][c];
}
}
return row[N-1];
}
以上是关于c_cpp [dp] [path] [matrix]具有非负数的2d矩阵/网格中的最小路径和。找到从左上角到右下角的路径,最小化的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 240.搜索2D Matrix II
c_cpp 54. Spiral Matrix.cpp
c_cpp 54. Spiral Matrix.cpp
c_cpp 54. Spiral Matrix.cpp
c_cpp 54. Spiral Matrix.cpp
c_cpp 54. Spiral Matrix.cpp