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]);}}
}