2014-09-10 4 views
3

Я дал массив. И я хочу найти всю перестановку массива, чтобы он суммировал определенные числа.
Пример
Array a =[2,3,5 ,1]
Целевой = 8
`Решение: [2,2,2,2], [5,3], [3,3,2], [5,2,1] и все возможные комбинации
Просьба предоставить я подхожу к решению этой проблемы, к проблеме, с которой я столкнулся, как справляться с повторением элементов. Таргетом является большое количество 10^6. Я думаю, что это так же, как This theoryПерестановка чисел в массиве для суммирования числа

+2

Это иногда называется проблемой смены монет и является стандартным вопросом алгоритмов. У вас может быть больше удачи в поиске этого термина. – templatetypedef

+0

Спасибо всем, что я нашел, что это стандартный алгоритм, скоро опубликует мое решение –

+0

Что насчет '[5,1,1,1]', '[3,3,1,1]', '[3 , 2,1,1,1] 'и' [1,1,1,1,1,1,1,1] 'и [еще много]? –

ответ

1

Вы столкнулись с типичным Subset Problem. Худшая сложность этой проблемы экспоненциальна, независимо от того, как вы ее выразили. Вы можете найти хорошие полиномиально-временные аппроксимации, которые творят чудеса для среднего случая.

Смежные вопросы