Сгенерировать все разделы целочисленного массива

Числа Белла подсчитывают количество разделов набора. Я хочу сгенерировать все возможные разделы моего целочисленного массива.

Например, у меня есть следующий целочисленный массив: {1, 2, 3, 4}. Тогда есть 15 разделов.

все разделы

Есть ли простой способ выполнить мою задачу? Или какой общий алгоритм?


person Denis    schedule 05.12.2014    source источник
comment
Вам нужно количество разделов или сами разделы?   -  person 5gon12eder    schedule 06.12.2014
comment
@ 5gon12eder, я знаю количество разделов. Это табличные данные. Я хочу получить сами разбиения.   -  person Denis    schedule 06.12.2014
comment
Возможно, вы знаете, как генерировать все возможные (одиночные) подмножества, например. в рекурсивной функции? Если у вас есть это, сделайте другой уровень рекурсивности... Подмножества и разделы набора без текущего подмножества...   -  person deviantfan    schedule 06.12.2014
comment
@deviantfan, спасибо за идею.   -  person Denis    schedule 06.12.2014
comment
Проблема с рекурсией заключается в том, что вы получите избыточные значения в своем наборе результатов. Я думаю, вам нужно использовать std::set и проверять на каждом уровне рекурсии, если вы уже нашли раздел, в котором находитесь.   -  person didierc    schedule 06.12.2014