动态规划法解决数字三角形用java
时间: 2024-03-09 08:18:31 浏览: 57
数字三角形是一个经典的动态规划问题。下面是用Java实现的动态规划算法:
```java
import java.util.*;
public class DynamicProgramming {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 数字三角形的行数
int[][] triangle = new int[n][n];
// 读入数字三角形
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
triangle[i][j] = sc.nextInt();
}
}
// 使用动态规划求解最大路径和
int[][] dp = new int[n][n];
dp[0][0] = triangle[0][0];
for (int i = 1; i < n; i++) {
dp[i][0] = dp[i - 1][0] + triangle[i][0];
for (int j = 1; j < i; j++) {
dp[i][j] = Math.max(dp[i - 1][j - 1], dp[i - 1][j]) + triangle[i][j];
}
dp[i][i] = dp[i - 1][i - 1] + triangle[i][i];
}
// 求出最大路径和
int maxSum = dp[n - 1][0];
for (int i = 1; i < n; i++) {
maxSum = Math.max(maxSum, dp[n - 1][i]);
}
System.out.println("最大路径和为:" + maxSum);
}
}
```
该算法的时间复杂度为O(n^2),空间复杂度也为O(n^2)。
阅读全文