#include <stdio.h>
void powerSet(int* a, int index, int *curr, int N) {
if (index == N)
return;
printf("(");
for(int i = 0; i <= index; i++)
printf("%d, ", curr[i]);
printf(")\n");
// processing here.
int x = index + 1;
for (int i = index + 1; i < N; i++) {
curr[x] = a[i];
// curr += str[i];
powerSet(a, i, curr, N);
}
return;
}
int main(){
int a[] = {10,12,14,17};
int *curr = (int*)malloc(sizeof(int) * 50);
int n = 4;
powerSet(&(*a),-1,curr,n);
}
Кажется, есть некоторая логическая ошибка с приведенным выше кодом. Кто-нибудь может указать на это, пожалуйста? Вывод, который вы получаете при запуске кода, выглядит примерно так:
()
(10, )
(10, 12, )
(10, 12, 14, )
(10, 12, 14, 17, )
(10, 12, 17, 17, )
(10, 14, 17, )
(10, 14, 17, 17, )
(10, 17, 17, 17, )
(12, 17, )
(12, 17, 14, )
(12, 17, 14, 17, )
(12, 17, 17, 17, )
(14, 17, 17, )
(14, 17, 17, 17, )
(17, 17, 17, 17, )