2014-12-06 18 views
0

Я хочу найти сумму всех подмножеств силового набора для массива большого размера (до 1500). Я искал, но не смог найти эффективный алгоритм для этого.Powerset для большого размера массива

Пример:

array=[1,2,3] 

Ответ:

{} -> 0,{1} -> 1,{2} -> 2,{3} -> 3,{1,2} -> 3,{1,3} -> 4,{2,3} -> 5,{1,2,3} -> 6 

Есть ли эффективный способ сделать это?

+2

C или C++, выберите один. – Borgleader

+0

C++, я упоминал в заголовке – kvnt1102

+0

. Тогда почему вы отметили вопрос с помощью C++ * и * C? – Borgleader

ответ

1

Существует 2^n подмножеств массива с n элементами.

Каждый элемент будет присутствовать ровно в половине случаев.

Следовательно, сумма всех подмножеств будет суммой всех элементов, умноженной на 2 n-1.

+0

Я хочу найти сумму каждого подмножества отдельно, как в примере. – kvnt1102

+2

@ kvnt1102. Из этих подмножеств будет 2^1500, вы действительно нужны им все отдельно? –

+0

есть проблема, чтобы узнать число подмножеств, по модулю m которых k – kvnt1102

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