Максимальное суммирование шаблона HourGlass не проходит все тесты - PullRequest
0 голосов
/ 08 октября 2018

Я пытался решить проблему на 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
    }
}

Я нашел несколько решений для этого вызова, но все с использованием разных алгоритмов, Проблема в том, что я хочу понять, есличто-то не так в алгоритме, который я построил, и как это исправить.

...