void print(char*array,int num) { int i; for(i = 0; i < num; i++) printf("%c ", array[i]); printf("\n"); }
void process(char*array,int cur,int num,char*p,char*q) { int i; int b = 1 <<(num - 1); int pi = 0; int qi = 0; for(i = 0; i < num; i++){ if(cur & b)
p[pi++]= array[i]; else
q[qi++]= array[i];
b >>= 1; }
printf("Values in P: ");
print(p, pi); printf("Values in Q: ");
print(q, qi); printf("\n"); }
voidpartition(char*array,int num) { int i; int last =(int)pow(2, num); char*p =(char*)malloc(sizeof(char)* num); char*q =(char*)malloc(sizeof(char)* num);
for(i = 1; i < last - 1; i++){
process(array, i, num, p, q); }
printf("Total = %d\n", last - 2);
free(p); free(q); }
int main() { char array[]="ABC"; partition(array, 3); return 0; }