2013-08-05 3 views
-11

Здесь у меня будет почти 50-100 номеров, для которых мне нужно найти комбинации, которые больше чем определенное число, и использовать результаты далее в моей проблеме ..:Самый эффективный алгоритм для нахождения всех комбинаций

, например: у меня есть 2 3 5 и имеют лет найти все комбинации, суммы которых равны или больше, чем, скажем, 5,

Так ответ будет 5 (2 + 3), 5 (5), 7 (5 + 2), 8 (5 + 3), 10 (2 + 3 + 5)

Мне не нужны суммы, мне просто нужны комбинации, которые отвечают требованиям к сумме.

число также будет находиться под 100.

+2

Попытка не показана. –

+0

Поскольку каждое число либо включено, либо исключено в комбинации, количество комбинаций будет 2^100 = 1.2676506e + 30 (~ 1 000 000 000 000 000 000 000 000 000 000 000) в худшем случае. Это предполагает, что вам нужны все комбинации с суммой, превышающей 0, и все числа уникальны. Даже если часть комбинаций исключается с помощью эффективного алгоритма, вы все равно получите огромное количество перестановок, на которые потребуется время для повторения. Вы уверены, что это лучший способ решить вашу проблему? – Akinakes

+0

Похоже на присвоение класса – andy256

ответ

2

Я рекомендую прочитать в то, что компьютер наука называет «подмножеством проблема сумма». Вы увидите, что проблема имеет полиномиальную или, по крайней мере, экспоненциальную сложность.

+1

+1 для обучения OP рыбачить. – andy256

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