Ich arbeite an einem Problem, wo ich die größte Summe unter allen Sanduhren im Array drucken muss. Sie können die Details über das Problem here-Java - Wie löst man dieses 2D-Array-Stundenglas?
finden, was ich versucht:
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int arr[][] = new int[6][6];
for (int arr_i = 0; arr_i < 6; arr_i++) {
for (int arr_j = 0; arr_j < 6; arr_j++) {
arr[arr_i][arr_j] = in.nextInt();
}
}
int sum = 0;
int tmp_sum = 0;
for (int arr_i = 0; arr_i < 4; arr_i++) {
for (int arr_j = 0; arr_j < 4; arr_j++) {
if (arr[arr_i][arr_j] > 0) {
sum = sum + (arr[arr_i][arr_j]) + (arr[arr_i][arr_j + 1]) + (arr[arr_i][arr_j + 2]);
sum = sum + (arr[arr_i + 1][arr_j + 1]);
sum = sum + (arr[arr_i + 2][arr_j]) + (arr[arr_i + 2][arr_j + 1]) + (arr[arr_i + 2][arr_j + 2]);
if (tmp_sum < sum) {
tmp_sum = sum;
}
sum = 0;
}
}
}
System.out.println(tmp_sum);
}
}
Eingang:
1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 9 2 -4 -4 0
0 0 0 -2 0 0
0 0 -1 -2 -4 0
Ausgang:
12
Erwartete Ausgabe:
13
Ich weiß nicht, wo ich falsch mache. Ich kann nicht verstehen, warum die erwartete Ausgabe 13
ist. Laut der Beschreibung in dem Problem sollte es 10
sein. Ist das eine falsche Frage oder ist mein Verständnis falsch?
Dank fro Ihre Anregungen und beantworten ... Es ist mir sehr geholfen. – RajSharma
@Stun_Gravy Weil '<4' bedeutet, dass der maximale Wert' 3' ist, und die Sanduhr auf '+2' geht, so dass max' 5' ist, was der maximale Index im Array der Größe '6' ist. Ich weiß nicht, was Sie meinen mit * "Array-Größe wurde nicht angegeben" *, da Sie kein Array zuweisen können, ohne eine Größe anzugeben. – Andreas
@Stun_Gravy Ich habe es gerade eingereicht, und es hat alle 8 Testfälle bestanden, also habe ich keine Ahnung, wovon du sprichst. – Andreas