java写一个动态规划求m行n列矩阵最小路径和
时间: 2024-03-20 20:43:17 浏览: 15
好的,下面是一个Java实现的动态规划算法,可以求解m行n列矩阵的最小路径和:
```java
public int minPathSum(int[][] grid) {
int m = grid.length;
int n = grid[0].length;
int[][] dp = new int[m][n];
dp[0][0] = grid[0][0];
// 初始化第一行
for (int j = 1; j < n; j++) {
dp[0][j] = dp[0][j-1] + grid[0][j];
}
// 初始化第一列
for (int i = 1; i < m; i++) {
dp[i][0] = dp[i-1][0] + grid[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]) + grid[i][j];
}
}
return dp[m-1][n-1];
}
```
这个算法的时间复杂度为O(mn),空间复杂度也是O(mn)。其中,dp[i][j]表示从左上角到达(i,j)位置的最小路径和。我们先初始化第一行和第一列的dp值,然后通过状态转移方程dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]) + grid[i][j],计算出所有位置的dp值。最后返回dp[m-1][n-1],即左上角到右下角的最小路径和。
希望这个算法能够帮助到你!