Чтобы каждый игрок сыграл против каждого игрока из другой команды, необходимо разделить игроков на пары таким образом, чтобы каждая пара представляла собой игрока из первой команды и игрока из второй команды.
Получается, что каждому игроку первой команды нужно найти соперника из второй команды.
В итоге для первой команды нам понадобится m пар игроков (при условии, что первая команда имеет m игроков), а для второй команды — n пар игроков (при условии, что вторая команда имеет n игроков).
Мы знаем, что количество игроков в каждой команде может быть разным. Никаких требований к количеству игроков нет, кроме того, что каждую пару игроков нужно взять по одному разу.
Предлагаю решить задачу, используя следующий алгоритм:
1. Определить количество игроков в каждой команде. Пусть первая команда имеет m игроков, а вторая команда — n игроков.
2. Если m > n, то назначаем каждому игроку первой команды по одному сопернику из второй команды, при этом остаются свободные игроки из первой команды. Нам нужно назначить остаток игроков из первой команды другим игрокам из второй команды таким образом, чтобы каждый игрок первой команды сыграл против каждого игрока второй команды. Для этого каждому игроку из остатка первой команды можно назначить по одному оставшемуся игроку из второй команды.
3. Если m < n, то делаем все то же самое, но меняем роли команд: каждому игроку из второй команды назначаем по одному сопернику из первой команды, и сначала заполняем остаток игроков второй команды свободными игроками из первой команды.
4. Если m = n, то просто назначаем каждому игроку первой команды по одному сопернику из второй команды (и наоборот).
Пример:
У нас есть 15 игроков в первой команде и 10 игроков во второй команде.
1. Первая команда имеет 15 игроков (m = 15), а вторая команда имеет 10 игроков (n = 10). Так как m > n, мы сначала назначаем каждому игроку первой команды по одному сопернику из второй команды (10 пар). Теперь у нас остаются 5 игроков из первой команды, для которых нужно найти соперников из второй команды. Нам нужно найти 5 игроков из второй команды для этих 5 игроков из первой команды. У нас остается 5 свободных игроков из второй команды, поэтому каждому игроку из первой команды назначаем по одному игроку из второй команды (5 пар).
2. Общее количество пар игроков: 10 + 5 = 15, что соответствует общему количеству игроков (m = 15) в первой команде.
Таким образом, расписание будет следующим:
1-й игрок первой команды vs. 1-й игрок второй команды,
2-й игрок первой команды vs. 2-й игрок второй команды,
...
10-й игрок первой команды vs. 10-й игрок второй команды,
11-й игрок первой команды vs. 1-й свободный игрок второй команды,
12-й игрок первой команды vs. 2-й свободный игрок второй команды,
...
15-й игрок первой команды vs. 5-й свободный игрок второй команды.