Here is the algorithm for printing all permutations ignoring repeats:

char buf[MAX_LEN];

void swap(int i, int j)
{ char t = buf[i]; buf[i] = buf[j]; buf[j] = t; }

void recur(int start, int len)
{
  if (len == 0) printf("%s", buf);
  else {
    for (int i = 0; i < len; ++i) {
      swap(start, i);
      recur(start + 1, len - 1);
      swap(start, i);
    }
  }
}

void permute(char *s)
{
  strcpy(buf, s);
  recur(0, strlen(buf));
}

Now the problem arises when swap(start, i); is exchanging two
different copies of the same character.  So how can you modify this
algorithm to prevent that?


On Dec 7, 8:01 am, Aniket <aniket...@gmail.com> wrote:
> Write a programme to produce all permutations of a given string where
> characters are not unique. That means you are not allowed to print the
> duplicate strings.
>
> Ex:
>
> If input is aaa
> The output should be only aaa

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to