给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。
从下往上走就不用初始化 从倒数第二排开始往上遍历,因为要j++
arr[i][j] = Math.max(arr[i+1][j],arr[i+1][j+1])+arr[i][j];
更新arr[i][j]的值
import java.util.Scanner; public class Java30 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n+1][n+1]; for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { arr[i][j] = sc.nextInt(); } } for (int i = n-1; i >=1; i--) { for (int j = i; j >=1; j--) { arr[i][j] = Math.max(arr[i+1][j],arr[i+1][j+1])+arr[i][j]; } } System.out.println(arr[1][1]); } }