import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] arr = new int[n][n];
for(int i = 0;i < n;i++) {
for(int j = 0; j < i+1;j++) {
arr[i][j] = in.nextInt();
}
}
for(int i = 1;i < n;i++) {
for(int j = 0; j < i+1;j++) {
if(j > 0) {
arr[i][j] = Math.max(arr[i-1][j] , arr[i-1][j-1]) + arr[i][j];
}else {
arr[i][j] = arr[i-1][j] + arr[i][j];
}
}
}
// for(int i = 0;i < n;i++) {
// for(int j = 0; j < i+1;j++) {
// System.out.print(arr[i][j]+" ");
// }
// System.out.println();
// }
Arrays.sort(arr[n-1]);
System.out.println(arr[n-1][n-1]);
}
}
【 算法训练】数字三角形
最新推荐文章于 2025-11-25 12:11:25 发布
该博客展示了如何使用动态规划解决一个计算二维数组中从左上角到右下角路径的最大和问题。通过递推公式更新数组元素,最后求得数组右下角的值作为结果。
674

被折叠的 条评论
为什么被折叠?



