This code works when u give integer input and all the digits are
unique.Hope this will help u to solve your problem.U will understand
the concept when u will go through the code.Modification is required..
#include<stdio.h>
//#include<conio.h>
#include<malloc.h>
#include<string.h>
char *q[50];
int count=0; //counts the no of elements in the set
int no_of_subsets; //counts the no of subsets possible.Used to
generate bit pattern from 0 to no_of_subsets-1
int set[25]; //Elements are stored in this array
void store_bits_in_char_array(int no)
{
int len;
char temp[30];
int i,m=0;
//temp=(char *)malloc(sizeof(char )*count);
for(i=count-1;i>=0;i--)
{
if((no&(1<<i))==0)
temp[m]='0';
else
temp[m]='1';
m++;
}
temp[m]='\0';
len=strlen(temp);
char *t;
t=(char *)malloc(sizeof(char )*(len+1));
strcpy(t,temp);
//printf("%s\n",temp);
q[no]=t;
//printf("%s\n",q[no]);
}
int count_no_of_subsets(int count)
{
int i;
int ret_val=1;
for(i=1;i<=count;i++)
ret_val=ret_val*2;
return(ret_val);
}
void output(int n)
{
printf("{");
int i;
for(i=0;i<count;i++)
{
if(*(q[n]+i)=='1')
printf("%d,",set[i]);
else
printf(" ");
}
printf("}");
}
int main()
{
//int set[25];
int i=0;
int choice;
do
{
printf("Enter the element: ");
scanf("%d",&set[i]);
i++;
count++;
printf("Is there any more elements?(Press 1 for Yes/Press 0
for No): ");
scanf("%d",&choice);
}while(choice==1);
//printf("%d\n",count);
no_of_subsets=count_no_of_subsets(count);
//printf("%d\n",no_of_subsets);
for(i=0;i<no_of_subsets;i++)
{
store_bits_in_char_array(i);
}
for(i=0;i<no_of_subsets;i++)
{
printf("\n");
output(i);
printf("\n");
}
getch();
return 0;
}
--
You received this message because you are subscribed to the Google Groups
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/algogeeks?hl=en.