c++求解矩阵最小路径和问题。给定一个m行n列的矩阵,从左上角开始每次只能向右或者向下移动,最后到达右下角的位置,路径上的所有数字累加起来作为这条路径的路径和。编写一个程序求所有路径和中的最小路径和。
时间: 2024-02-16 07:04:34 浏览: 80
c代码-矩阵最小路径和 概述: 给定一个矩阵,大小为m,从左上角开始每次只能向右走或者向下走,最后达到右下角的位置。路径中所有数字累加起来就是路径和,返回所有路径的最小路径和。 示例1 比如输入矩阵为 4 1 5 3 3 2 7 7 6 5 2 8 8 9 4 5 最小路径为 23
下面是C++代码实现:
```cpp
#include <vector>
#include <algorithm>
using namespace std;
int minPathSum(vector<vector<int>>& matrix) {
int m = matrix.size(), n = matrix[0].size();
vector<vector<int>> dp(m, vector<int>(n, 0));
dp[0][0] = matrix[0][0];
for (int i = 1; i < m; i++) {
dp[i][0] = dp[i-1][0] + matrix[i][0];
}
for (int j = 1; j < n; j++) {
dp[0][j] = dp[0][j-1] + matrix[0][j];
}
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + matrix[i][j];
}
}
return dp[m-1][n-1];
}
```
时间复杂度为 O(mn),空间复杂度为 O(mn)。
阅读全文