Я пытался решить проблему на HackerRank, Day11 , но написанный мною код не проходит все тесты после отправки My submission results
, я не знаю, почемуя пытался сделать пользовательский ввод , и все они прошли успешно
import java.util.*;
public class Solution {
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
int[][] arr = new int[6][6];
for (int i = 0; i < 6; i++) {
String[] arrRowItems = scanner.nextLine().split(" ");
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
for (int j = 0; j < 6; j++) {
int arrItem = Integer.parseInt(arrRowItems[j]);
arr[i][j] = arrItem;
}
}
scanner.close();
/*
*
* Solution start from here
*
* */
int max = 0; //store the maximum sum of HourGlass
int count; //counter for HourGlass to represent the location at HourGlass, starts at 1 ends at 9
int sum; //Store the summation of Hourglass
//This is the 2D array loop
for (int k = 0; k <= Math.round(arr.length / 2); k++) {
for (int l = 0; l <= Math.round(arr.length / 2); l++) {
count = 0; //initializing the counter
sum = 0; //initializing the sum
//This is the HourGlass Loop
for (int m = k; m <= k + 2; m++) {
for (int n = l; n <= l + 2; n++) {
//Prevent adding location 3 and 5 in HourGlass to the summation
if (count == 3 || count == 5) {
sum += 0;
} else {
sum += arr[m][n];
}
count++; //counter increment to prepare moving to next cell
}
//Check if the last summation is larger than the previous maximum stored
if (sum > max) {
max = sum;
}
}
}
}
System.out.println(max); //Print the result
}
}
Я нашел несколько решений для этого вызова, но все с использованием разных алгоритмов, Проблема в том, что я хочу понять, есличто-то не так в алгоритме, который я построил, и как это исправить.