Ctrl K
Курс · шаг 68 из 79К шагуДальше

Наборы гирь на точный вес

Средняя
На складе есть гири нескольких номиналов, их веса перечислены в массиве weights (все веса разные). Гирь каждого номинала сколько угодно. Нужно уравновесить груз весом total: найдите все наборы гирь, суммарный вес которых равен ровно total. Набор определяется тем, сколько гирь каждого номинала в него входит, поэтому [3, 3, 4] и [4, 3, 3] — один и тот же набор и в ответе должен встретиться один раз. Верните список всех наборов. Порядок наборов и порядок гирь внутри набора могут быть любыми.
Пример 1
weights=[4, 3, 9], total=10 → [[3, 3, 4]]

Подходит только один набор: 3 + 3 + 4. Запись 4 + 3 + 3 — тот же самый набор, а другие сочетания 3, 4 и 9 не дают 10.

Пример 2
weights=[2, 5, 6], total=12 → [[2, 2, 2, 2, 2, 2], [2, 2, 2, 6], [2, 5, 5], [6, 6]]

Четыре набора: шесть двоек, 2 + 5 + 5, 6 + 6 и 2 + 2 + 2 + 6.

Пример 3
weights=[7], total=4 → []

Гиря тяжелее нужного веса — наборов нет.

Ограничения
  • 1 ≤ длина weights ≤ 30
  • 1 ≤ weights[i] ≤ 200
  • Все веса в weights различны
  • 1 ≤ total ≤ 500
  • Подходящих наборов меньше 150
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКарты на точную сумму СредняяВсе расстановки СредняяРазличные перестановки с повторами СредняяВсе наборы добавок СредняяСлово на сетке букв Средняя
загружаем Python…
Вход
weights=[4, 3, 9], total=10
Ожидается
[[3, 3, 4]]

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