Warum funktioniert meine Lösung nicht?Verwirrende 2D-Arrays
Es ist eine Übung zum Üben von 2D-Arrays, und anscheinend habe ich darin versagt, sie zu verstehen. Eingabe ist eine Methode zu erstellen, die die größte sanduhrförmige Anzahl von Ganzzahlen in einem Array [] [] findet. Die Größe eines Arrays ist immer 6x6, daher sind for-Schleifen x < 4 und y < 4, auch ganzzahlige Werte werden von -9 bis 9 sein, deshalb beginnt meine Ergebnisvariable mit -256 (wenn ich mit 0, Array full begann negative Werte würden nicht funktionieren)
Probeneingang
1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 0 2 4 4 0
0 0 0 2 0 0
0 0 1 2 4 0
das ist die Sanduhr-Form ist in Ausgang resultierenden
2 4 4
2
1 2 4
Beispielausgabe
19
Mein falscher Ausgang
13
Hier ist die Methode:
public class Lösung { public static int biggestHourglass (int [] [] Puffer) {
int result = -256;
int currentSize = 0;
for (int x=0; x<4; x++){
for (int y=0; y<4; y++){
currentSize = (buffer[x][y+2] + buffer[x+1][y+2] + buffer[x+2][y+2]
+ buffer[x+1][y+1]
+ buffer[x][y] + buffer[x+1][y] + buffer[x+2][y]);
if (currentSize > result) { result = currentSize;}
}
}
return result;
}
}
Dann Methode meiner biggestHourglass() in Haupt verwendet.
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int arr[][] = new int[6][6];
for(int i=0; i < 6; i++){
for(int j=0; j < 6; j++){
arr[i][j] = in.nextInt();
}
}
System.out.println(Solution.biggestHourglass(arr));
}
}
Mein resulst nicht erwartet überein, und ich weiß nicht, was ich falsch gemacht. Bitte sei nicht unhöflich, ich lerne immer noch. Vielen Dank!
Sie sollten angeben, was "größte sanduhrförmigen Anzahl von ganzen Zahlen" bedeuten . –
Schauen Sie sich Beispiel Eingabe, wenn Sie in der oberen linken Ecke dieses 2D-Array, '1' s etwas wie Sanduhr Form, 1 1 1 oben, dann 1 in der Mitte und 1 1 1 unten, das ist eine Sanduhr Form, was ich muss ich finden, ich werde versuchen, es besser in meiner Frage zu erklären, danke für das Feedback –
Aber das ist eine ziemlich lockere Definition. Wenn ich in der ersten und dritten Reihe sechs 1 und in der zweiten Reihe zwei 1 hatte, zählt das (weil die allgemeine Form ähnlich wäre). Kann ich mehr als 3 Reihen haben? Was sollten sie enthalten, um als "sanduhrförmig" zu gelten. –