Hi Don,
             Good one :) Nice to see different approaches for this problem.

-Thanks,
Bujji


On Fri, Jan 10, 2014 at 9:11 AM, Don <[email protected]> wrote:

> Sort the input string and remove duplicates, keeping a count of the number
> of occurrences of each character.
> They you can build the permutations easily.
>
> For your example, you would start with
>
> char *str = "aba";
> int len = strlen(str);
>
> Which would be converted to
>
> char *str "ab";
> int rep[N] = {2,1,0};  // The string contained 2 'a's and 1 'b'
> char result[N];
>
> Then call permute(str,rep,len)
>
> void permute(char *str, int *rep, int len, int p=0)
> {
>    if (p<len)
>    {
>       for(int i = 0; str[i]; ++i)
>          if (rep[i])
>          {
>             result[p] = str[i];
>             --rep[i];
>             permute(str, rep, len,p+1);
>             ++rep[i];
>          }
>    }
>    else printf("%s\n", result);
>
> }
>
> On Monday, January 6, 2014 5:05:08 PM UTC-5, bujji wrote:
>>
>> generate all possible DISTINCT permutations of a given string with some
>> possible repeated characters. Use as minimal memory as possible.
>>
>> if given string contains n characters in total with m < n distinct
>> characters each occuring n_1, n_2, ....n_m times where n_1 + n_2 + ...+ n_m
>> = n
>>
>> program should generate n! / ( n_1! * n_2! * ....* n_m!  )  strings.
>>
>> Ex:
>>  aba  is given string
>>
>> Output:
>>
>> aab
>> aba
>> baa
>>
>>
>> -Thanks,
>> Bujji
>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].

Reply via email to