#java
#java
Вопрос:
Танцующая пара
Делийская государственная школа проводит соревнования по шахматам в честь своего 30-летия. Для этого зарегистрировались N мальчиков и M девочек. Руководство школы должно составлять пары (поскольку шахматы — это игра для 2 человек).
В паре должен быть один мальчик и одна девочка. Однако шахматные навыки партнеров в каждой паре должны отличаться не более чем на единицу. Для каждого мальчика мы знаем его шахматные навыки. Аналогично, для каждой девушки мы знаем ее навыки игры в шахматы.
Вы, будучи в комитете по управлению, должны определить максимально возможное количество пар, которые могут быть сформированы из N мальчиков и M девочек.
Ввод: первая строка содержит T, обозначающее количество тестовых примеров. Для каждого тестового примера в T,
The first line contains a single integer N, denoting the number of boys.
The second line contains N space-separated integers denoting skills of N boys.
The third line contains a single integer M, denoting the number of girls.
The fourth line contains M space-separated integers denoting skills of M girls.
Вывод:
Выведите в новой строке максимальное количество пар, которые могут быть сформированы, в которых каждая пара навыков мальчика и девочки отличается не более чем на 1.
Ограничения:
1<=N<=1e5
1<=M<=1e5
0<=1e9<=skills.
Пример ввода:
2
3
1 2 3
3
2 3 4
4
2 3 4 5
3
6 7 8
Пример вывода:
3
1
Объяснение:
В первом тестовом примере 1-й мальчик может быть в паре с 1-й девочкой (разница в навыках = 1), 2-й мальчик со 2-й девочкой (разница в навыках = 1) и 3-й мальчик с 3-й девочкой (разница в навыках = 1). Мы видим, что каждая пара имеет не более 1 разницы в навыках своих партнеров. Во втором тестовом примере только 3-й мальчик и 1-я девочка могут быть в паре (разница в навыках = 1), для каждой другой пары разница будет больше 1.
Пример ввода:
2
3
3 6 7
4
7 5 7 10
3
2 9 1
5
2 7 2 7 11
Вывод:
2
2
Мое решение, но оно передает только 2 из 4 тестовых примеров, и у меня нет других входных тестовых примеров, так что, ребята, скажите, где может быть ошибка, и это нужно делать только на Java
//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
class Main {
public static void main(String[] arrgs) throws IOException {
Scanner obj = new Scanner(System.in);
// BufferedReader bi = new BufferedReader(new InputStreamReader(System.in));
// String[] strNumsBoys ;
// String[] strNumsGirls ;
ArrayList<Integer> all = new ArrayList<>();
int t = obj.nextInt();
while (t != 0) {
int count = 0;
int numberOfBoys = obj.nextInt();
// strNumsBoys = bi.readLine().split("\s");
// for (int i = 0; i < strNumsBoys.length; i ) {
// boysSkills[i] = Integer.parseInt(strNumsBoys[i]);
// }
// strNumsBoys = obj.nextLine().split("\s");
// for (int i = 0; i < numberOfBoys; i ) {
// boysSkills[i] = Integer.parseInt(strNumsBoys[i]);
// }
int[] boysSkills = new int[numberOfBoys];
for(int i=0;i<numberOfBoys;i )
{
boysSkills[i] = obj.nextInt();
}
int numberOfGirls = obj.nextInt();
// strNumsGirls = bi.readLine().split("\s");
// for (int i = 0; i < strNumsGirls.length; i ) {
// girlsSkills[i] = Integer.parseInt(strNumsGirls[i]);
// }
// strNumsGirls = obj.nextLine().split("\s");
// for (int i = 0; i < numberOfGirls; i ) {
// girlsSkills[i] = Integer.parseInt(strNumsGirls[i]);
// }
int[] girlsSkills = new int[numberOfGirls];
for(int i=0;i<numberOfGirls;i )
{
girlsSkills[i] = obj.nextInt();
}
for (int i = 0; i < numberOfBoys; i ) {
int incresed = boysSkills[i];
incresed = incresed 1;
for (int k = 0; k < numberOfGirls; k ) {
if (incresed == girlsSkills[k]) {
count = count 1;
}
}
}
int out = count;
all.add(out);
t = t - 1;
}
all.forEach(System.out::println);
}
}
Ответ №1:
Вы не приняли эти 2 случая:
- когда boysSkills [i]== girlsSkills [i], поскольку разница составляет почти 1.
- уменьшенная переменная также, поскольку запрашивается разница, и она может быть положительной или отрицательной.