У меня есть этот код, который генерирует набор мощности из массива размером 4 (число - это просто пример, меньше комбинаций для записи...).
#define ARRAY_SIZE 4
unsigned int i, j, bits, i_max = 1U << ARRAY_SIZE;
int array[ARRAY_SIZE];
for (i = 0; i < i_max ; ++i) {
for (bits = i, j = 0; bits; bits >>= 1, ++j) {
if (bits & 1)
printf("%d", array[j]);
}
}
Вывод:
{}
{1}
{2}
{1, 2}
{3}
{1, 3}
{2, 3}
{1, 2, 3}
{4}
{1, 4}
{2, 4}
{1, 2, 4}
{3, 4}
{1, 3, 4}
{2, 3, 4}
{1, 2, 3, 4}
Мне нужно, чтобы этот вывод был таким:
{1}
{2}
{3}
{4}
{1, 2}
{1, 3}
{1, 4}
{2, 3}
{2, 4}
{3, 4}
{1, 2, 3}
{1, 2, 4}
{1, 3, 4}
{2, 3, 4}
{1, 2, 3, 4}
Так что его нужно заказать так. Я не могу выполнить этот заказ после того, как этот алгоритм заканчивается, я должен использовать каждую комбинацию на каждой итерации, поэтому ей нужно сгенерировать уже настроенные комбинации. Кто-нибудь может мне помочь? Я думаю, что думал обо всем...
EDIT: окончательный вывод должен быть без пустого набора, но это не приоритет.