Sunday, 6 April 2014

Printing the all anagrams of a word

#include <stdio.h>
int check(char [],int , char );
int main()
{
   char a[10]="abcd";
   anagrams(a);
}
void anagrams(char in[])
{
char out[10];
int n;
n=strlen(in);
auxanagram(in,out,0,n);
}
void auxanagram(char in[],char out[],int d,int n)
{
int i;
if(d==n) // print output
{
out[n]='\0';
printf("%s\n",out);
return;
}
for(i=0;i<n;i++)
{
if(check(out,d,in[i]))  // Pruning logic
continue;
out[d]=in[i];
auxanagram(in,out,d+1,n);
}
}
int check(char out[],int d,char c)
{
int i;
for(i=0;i<d;i++)
if(out[i]==c)
return 1;
return 0;
}

No comments:

Post a Comment