Все темы
61

Выбор команды, где порядок не важен

Tier 1Закрыто

Где применяется

1. Задача

Тебе нужно поставить на дежурство 2 человек из группы в 4. Ты хочешь перечислить все возможные пары, чтобы сравнить их. Пара {Аня, Боря} здесь то же самое, что {Боря, Аня}: на дежурстве те же двое. Порядок ничего не значит.

Если взять перебор порядков из прошлого урока, ты получишь {Аня, Боря} и {Боря, Аня} как два разных результата, и потом придётся убирать повторы. Для пар это мелочь. Для выбора 5 человек из 30 каждая группа появится 120 раз: перебор выдаст 17 100 720 порядков ради 142 506 разных групп. Выбор, где порядок не важен, называется сочетанием (combination). Каждое сочетание можно перечислить ровно один раз, без чистки повторов.

Этот шаг из платной части

Бесплатные шаги в начале курса (их 33) открыты всем: урок, задача и тесты. Этот шаг открывается с полным доступом. Начни с бесплатного аккаунта и бесплатных шагов.

Завести бесплатный аккаунтПосмотреть, что входит

Как узнать

Бэктрекинг (Backtracking)

Эти слова в условии значат этот паттерн

  • сгенерировать все подмножества/перестановки/комбинации
  • n маленькое (примерно n <= 12-20), экспоненциальный перебор допустим
  • сделать выбор, уйти в рекурсию, затем отменить выбор перед следующим
  • расставить элементы с ограничениями и откатиться при конфликте (N ферзей, судоку)
  • вернуть все допустимые варианты, а не один

Похоже, но не то

Ответ растёт экспоненциально, поэтому n маленькое. Подмножеств из 20 элементов 1e6, перестановок из 10 около 3.6e6.

На LeetCode

Задачи на выбор групп, где порядок не важен, часто с заданной суммой. Передавай вниз индекс start, тогда каждая группа собирается только в одном порядке.

Мы используем необходимые куки для работы сайта (вход и язык). Если ты согласишься, мы также загрузим Google Analytics, чтобы видеть, какие страницы читают, и Google reCAPTCHA для защиты форм обратной связи и сообщений об ошибке от спама. Политика конфиденциальности