Дополнительный вход
Я работаю над проблемой Каттис. Я не уверен, как получить второй набор входных данных для распознавания и обработки. Можете ли вы кому-нибудь предложить помощь?
Вот подробности:
Инструкция:
Входные данные:
Первая строка ввода дает количество тестовых случаев. Есть две строки для каждого теста. Первый показывает количество магазинов, которые нужно посетить, а второй - целые позиции на Лонг-стрит.
Выход:
Выведите для каждого тестового примера строку с минимальным пешеходным расстоянием с учетом оптимальной парковки.
Пример ввода и вывода:
вход
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
}