输入描述
输入的第一行包含一个整数 N\ (1 \leq N \leq 100)N (1≤N≤100),表示三角形的行数。
下面的 NN 行给出数字三角形。数字三角形上的数都是 0 至 100 之间的整数。
输出描述
输出一个整数,表示答案。
输入输出样例
示例
输入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输出
27
import java.util.Scanner;
public class Main {
public static int N;
public static int[][] m;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
m = new int[N][N];
int [][] max = new int[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j <= i; j++) {
m[i][j] = sc.nextInt();
max[i][j] = -1;
}
}
System.out.println(bfs(0,0,max,0,0));
sc.close();
}
private static int bfs(int i, int j,int max[][],int zx,int yx) {
// System.out.println(i+" "+j+" "+zx+" "+yx+" "+max[i][j]);
if (zx>N/2||yx>N/2) {
return 0;
}
if(max[i][j]!=-1){
return max[i][j];
}
if(i==N-1){
max[i][j] = m[i][j];
}else{
int x=bfs(i+1,j,max,zx+1,yx);
int y=bfs(i+1,j+1,max,zx,yx+1);
max[i][j]=Math.max(x,y)+m[i][j];
}
return max[i][j];
}
}