Ctrl K

Карты на точную сумму

Средняя
На столе лежат карты, на каждой написано число: значения перечислены в массиве cards, среди них могут быть одинаковые. Нужно собрать **руку** — несколько карт, сумма чисел на которых равна ровно total. Каждую карту со стола можно взять не больше одного раза. Руки сравниваются по набору чисел: если две руки состоят из одних и тех же значений (пусть и из разных физических карт), это одна и та же рука, и в ответе она должна встретиться ровно один раз. Верните все различные руки. Порядок рук и порядок чисел внутри руки могут быть любыми.
Пример 1
cards=[3, 1, 4, 2, 3], total=6 → [[1, 2, 3], [2, 4], [3, 3]]

Подходят руки 1 + 2 + 3, 2 + 4 и 3 + 3. Тройки две, но рука 1 + 2 + 3 засчитывается один раз, какую бы из троек ни взять.

Пример 2
cards=[5, 5, 5], total=10 → [[5, 5]]

Единственная рука — две пятёрки.

Пример 3
cards=[4, 8], total=6 → []

Ни одна рука не даёт 6 — ответ пустой.

Ограничения
  • 1 ≤ длина cards ≤ 100
  • 1 ≤ cards[i] ≤ 50
  • 1 ≤ total ≤ 30
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиНаборы гирь на точный вес СредняяВсе расстановки СредняяРазличные перестановки с повторами СредняяВсе наборы добавок СредняяСлово на сетке букв Средняя
загружаем Python…
Вход
cards=[3, 1, 4, 2, 3], total=6
Ожидается
[[1, 2, 3], [2, 4], [3, 3]]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 82 теста на сервере, включая скрытые.