Code:
#include <stdio.h>
void subsets(char word[], int sz, char arr [])
{
int arrc=0,flag=11,i=0,d=0;
char dep[10];
subsetf2(word,sz,arr,i,d,dep,flag,arrc);
}
subsetf2(char word[],int r,char arr,int i,int d,char dep[],int flag,int arrc)
{
flag=subsetfunc1(word,r,arr,i,d,dep,flag,arrc);
if(flag==strlen(word));
subsetf2(word,r,arr,++i,d,dep,flag,arrc);
}
subsetfunc1(char word[],int r,char arr,int i,int d,char dep[],int flag,int arrc)
{
if(strlen(dep)==r)
{
dep[d]='\0';
flag=d-1;
arrc=arrint(arr,dep,arrc);
return (flag);
}
if(i==flag) subsetfunc1(word,r,arr,++i,d,dep,flag,arrc);
dep[d]=word[i];
subsetfunc1(word,r,arr,++i,++d,dep,flag,arrc);
}
int arrint(char arr[],char dep[],int j,int arrc)
{
if(dep[j]=='\0')
{
arr[arrc]=',';
return(arrc);
}
arr[arrc]=dep[j];
return arrint(arr,dep,++j,++arrc);
}
void main()
{
char w[] = "abcd";
char r[200];
subsets(w, 2, r);
}