package cn.gldwolf.bigdata;
import java.util.Scanner;
public class NumberTower {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Please input the tower height: ");
int height = input.nextInt();
int firIndex = height - 1;
int[][] orignal = new int[height][];
int[][] ultima = new int[height][];
System.out.println(orignal.length);
System.out.println("Please input the number for the number tower: ");
for (int i = 0; i < orignal.length; i++) {
orignal[i] = new int[i + 1];
for (int j = 0; j <= i; j++) {
orignal[i][j] = input.nextInt();
}
}
createUltimaArray(firIndex, orignal, ultima);
printTrace(firIndex, orignal, ultima);
}
public static void createUltimaArray(int firIndex, int[][] orignal, int[][] ultima) {
for (int i = 0; i < orignal.length; i++) {
ultima[i] = new int[i + 1];
for (int j = 0; j <= i; j++) {
ultima[i][j] = orignal[i][j];
}
}
int temp_max;
for (int i = firIndex - 1; i >= 0; --i) {
for (int j = 0; j <= i; ++j) {
temp_max = Math.max(ultima[i + 1][j], ultima[i + 1][j + 1]);
ultima[i][j] = temp_max + orignal[i][j];
}
}
}
public static void printTrace(int firIndex, int[][] orignal, int[][] ultima) {
int max = ultima[0][0];
System.out.print(orignal[0][0]);
int j = 0;
for (int i = 1; i <= firIndex; i++) {
int node = ultima[i - 1][j] - orignal[i - 1][j];
if (node != ultima[i][j])
++j;
System.out.print(" --> " + orignal[i][j]);
}
}
}