だから私は付加価値のピラミッドを作ろうとしています。元。1行目は(5)、2行目は(6,7)、3行目は(12,10,7)です。目標は、最初の行の最大値と、次の行の最大の接続子値を追加することです。したがって、この場合、5 + 7 + 10を追加すると、結果は22になります。3行目で12を使用できない理由は、上記の番号の子を使用する必要があるためです(各親は2人の子供)。
私のアプローチは、Scannerを使用してint値を行ごとに配列にロードし、前の行の最も高い子値の位置にインデックスを付けて、それを現在の合計に追加することです。これが私がこれまでに持っているコードです...
//データファイル内...
5
6 7
12 10 7
//それで全部です。
public static void main(String[] args) {
Scanner scanner = null;
try {
scanner = new Scanner(new File("/users/joe/desktop/data.txt"));
} catch (FileNotFoundException e) {
System.out.println("File not found.");
e.printStackTrace();
} //reads the file
int[] a = new int[100]; //establishes new array with a max size of 100
int i = 0; //placeholder for array position
int result = 0;
int total = 0;
while(scanner.hasNextLine()){ //loops through line
a[i++] = scanner.nextInt(); //adds int to array
if(i == 0){ //does this belong here?
result = a[0];
}
else{
if(a[i-1] >= a[i+1]){
result = a[i-1];
}
else if(a[i-1] <= a[i+1]){
result = a[i+1];
}
}
}
total = total + result;
scanner.close();
System.out.print(Arrays.toString(a));
System.out.println("\n" + total);
}
}
現在、これは次のように出力されます:[5,6,7,12,10,7,0,0,0,0,0、...最大100ポジション]
5
スキャナーに1行を読み取らせ、それを配列にロードしてループさせ、次の行の配列から最大の子値を保存するにはどうすればよいですか?