蓝桥杯 数字三角形 满分答案(java)
简单的动态规划 不过需要注意的是左右步数之差不超过1,只需要满足行数-2*列数>=1即可(因为向左或者向右是固定的)
import java.util.*;
public class Main{
public static void main(String[]args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int []arr2=new int[n+1];
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=2;i<=n;i++) {
for(int j=1;j<=i;j++) {
if(j==1)
arr[i][j]+=arr[i-1][j];
else {
arr[i][j]+=Math.max(arr[i-1][j], arr[i-1][j-1]);
}
}
}
for(int j=1;j<=n;j++) {
if(Math.abs(n-2*j+1)<=1)
arr2[j]=arr[n][j];
}
Arrays.sort(arr2);
System.out.print(arr2[n]);
}
}
参考了小怂的代码:https://blog.csdn.net/qq_55668645/article/details/123592474?spm=1001.2014.3001.5502