java代码实现矩阵最小路径和
时间: 2024-05-06 15:02:37 浏览: 142
geekerstar#algorithm-tutorial#矩阵的最小路径和1
好的,我可以用动态规划算法来实现。首先定义一个二维数组 dp,其中 dp[i][j] 表示从起点 matrix[0][0] 到达位置 (i,j) 的最小路径和。则最终结果为 dp[m-1][n-1],其中 m 和 n 分别为矩阵 matrix 的行数和列数。
然后可以根据动态规划的递推公式来填充 dp 数组。具体来说,首先初始化 dp[0][0] 为 matrix[0][0],然后填充第一行和第一列的值,即 dp[0][j] 和 dp[i][0],可以用如下公式:
dp[0][j] = dp[0][j-1] + matrix[0][j](j > 0)
dp[i][0] = dp[i-1][0] + matrix[i][0](i > 0)
接下来填充其它位置的值,可以用如下公式:
dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + matrix[i][j](i > 0,j > 0)
最后返回 dp[m-1][n-1] 即可。
下面是完整的 Java 代码实现:
```
public int minPathSum(int[][] matrix) {
int m = matrix.length;
if (m == 0) {
return 0;
}
int n = matrix[0].length;
if (n == 0) {
return 0;
}
int[][] dp = new int[m][n];
dp[0][0] = matrix[0][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++) {
dp[i][0] = dp[i-1][0] + matrix[i][0];
}
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]) + matrix[i][j];
}
}
return dp[m-1][n-1];
}
```
阅读全文