Найти подмножества в Python, сумма которых меньше или равна целевому значениюPython

Программы на Python
Anonymous
Найти подмножества в Python, сумма которых меньше или равна целевому значению

Сообщение Anonymous »

Я видел разные варианты этой задачи, но не могу найти решение именно этой: «Давный список натуральных чисел и целевое значение t, найти все максимальные подмножества, сумма которых меньше или равна t . Каждый элемент должен появляться ровно столько раз, сколько он появляется в данном входном списке"
Например: если список равен [1, 3, 5, 2, 2, 5, 3]. , 1] и target = 6:
один возможный вывод: [[1,2,2,1], [3, 3], [5 ], [5]]
другой возможный вывод: [1,2,3], [1,2,3], [5], [5]Возможно, есть и другие возможности..
Похоже, что хороший жадный подход может решить эту проблему... но я не могу написать решение на Python. Когда я говорю «максимальное» подмножество, система должна попытаться найти подмножества желательно максимально возможного размера... а не выбирать подмножества меньшего размера. Любая помощь?
  • проходим жадным образом и добавляем в сумку элементы по своему усмотрению (насколько близко к целевому значению...).

    li>
    удалите элементы, уже упакованные в пакеты.
  • возьмите новый пакет сейчас.
  • повторяйте два вышеуказанных шага, пока не все элементы упакованы в пакеты.
ПРИМЕЧАНИЕ: мне не нужен эффективный в вычислительном отношении раствор. Я ищу «решение», которое работает. Данный список небольшой по размеру... возможно, максимум 100 элементов.

Подробнее здесь: https://stackoverflow.com/questions/763 ... rget-value

Вернуться в «Python»