先看题目,这个题的重点在于向左和向右的次数相差不能大于一,根据规律来就是最后的值都会落到中间数明白题解我们就来看来解题思路
首先,我们创建一个数字三角形,使用二维数组来做更直观
看代码
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int n = scan.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] = scan.nextInt();
}
}
创建完之后,我们把路径的最大和算出来然后就直接判断中间数的大小就好了,根据列号判断中间数;
看代码
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int n = scan.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] = scan.nextInt();
arr[i][j]=arr[i][j]+Math.max(arr[i-1][j],arr[i-1][j-1]);
}
}
if(n%2==0){
System.out.println(Math.max(arr[n][n/2],arr[n][n/2+1]));
}else{
System.out.println(arr[n][n/2+1]);
}
scan.close();
完成 感谢观看