Дополнительный вход

Я работаю над проблемой Каттис. Я не уверен, как получить второй набор входных данных для распознавания и обработки. Можете ли вы кому-нибудь предложить помощь?

Вот подробности:

Инструкция:

Входные данные:
Первая строка ввода дает количество тестовых случаев. Есть две строки для каждого теста. Первый показывает количество магазинов, которые нужно посетить, а второй - целые позиции на Лонг-стрит.

Выход:
Выведите для каждого тестового примера строку с минимальным пешеходным расстоянием с учетом оптимальной парковки.

Пример ввода и вывода:

вход
2
4
24 13 89 37
6
7 30 41 14 39 42

выход:
152
70

Итак, в основном, вы берете разницу между самым большим и самым маленьким и удваиваете ее. Я получил первый набор данных (24, 13, 89, 37) для вычисления 152, но моя программа игнорирует второй набор данных (7, 30, 41, 14, 39, 42). Вот код:

    public static void main(String[] args) {
    //create scanner for input
    Scanner in = new Scanner (System.in);

    //create variables for first two input lines
    int cases = in.nextInt();
    int numOfStores = in.nextInt();

    //initialize array
    int numArray [] = new int[numOfStores];

    //assign values to array
    for (int i = 0; i < numArray.length; i++){
        numArray[i] = in.nextInt();}

    //sort array
    Arrays.sort(numArray);

    //set min value to first index position of array
    int min = numArray[0];

    //set max value to last index position of array
    int max = numArray[numArray.length - 1];

    //print out the difference of max and min multiplied by 2 for     distance to and from
    System.out.println((max - min) * 2);

2 ответа

Вы должны добавить цикл выше для количества тестовых случаев. Кроме того, вам нужно поместить результаты в список, чтобы вы могли, наконец, отобразить их на консоли.

        import java.util.Scanner;
        import java.util.ArrayList;
        import java.util.Arrays;

        class Kattis {

            public static void main(String[] args) {
                // Create scanner for number of test cases.
                System.out.println("Input");
                Scanner in = new Scanner(System.in);
                int numTestCases = in.nextInt();

                ArrayList<Integer> out = new ArrayList<>();

                for (int t = 0; t < numTestCases; ++t) {

                    int numOfStores = in.nextInt();

                    // initialize array
                    int numArray[] = new int[numOfStores];

                    // assign values to array
                    for (int i = 0; i < numArray.length; i++) {
                        numArray[i] = in.nextInt();
                    }

                    // sort array
                    Arrays.sort(numArray);

                    // set min value to first index position of array
                    int min = numArray[0];

                    // set max value to last index position of array
                    int max = numArray[numArray.length - 1];

                    // print out the difference of max and min multiplied by 2 for distance to and


                    out.add((max - min) * 2);
                }
                in.close();
                System.out.println("Output");
                for (Integer data : out) {
                    System.out.println(data);
                }
            }
        }

Вы должны зациклить свой код, сколько раз вводятся регистры. Таким образом, вы можете использовать цикл for.

int cases = in.nextInt();
for(int c = 0; c < cases; c++){
  //rest of the code
}
Другие вопросы по тегам