写个java动态规划路径的例子
时间: 2023-07-23 16:32:21 浏览: 77
TSHORTTh.rar_动态路径规划
好的,以下是一个使用Java实现的动态规划路径问题的例子:
问题描述:给定一个m*n的矩阵,从左上角出发,每次只能向下或向右移动一步,到达右下角的最短路径。
解题思路:使用动态规划,将到达每个点的最短路径保存在一个二维数组中,最终返回右下角的最短路径即可。
Java代码实现:
```java
public class DynamicProgramming {
public int minPath(int[][] matrix) {
int m = matrix.length;
int n = matrix[0].length;
int[][] dp = new int[m][n];
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] = Math.min(dp[i - 1][j], dp[i][j - 1]) + matrix[i][j];
}
}
return dp[m - 1][n - 1];
}
}
```
其中,matrix为输入的m*n矩阵,dp为保存最短路径的二维数组,dp[i][j]表示到达第i行、第j列的最短路径长度。在计算dp数组时,从左上角开始,逐行逐列计算,每个位置的值为其上方和左侧位置的最小值加上该位置的值,即dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + matrix[i][j]。最终,返回dp[m-1][n-1]即可。
阅读全文