It is also so easy, but maybe requires more lines of code

you only need count number of used number for each 1..n
and then...(repeat recursive approach)

ONE LINE SOLUTION IN C++

ok use next permutation from STL, read how it works for other language
and initialize array 11223344, and do while next_permutaion()...
it actualy gives you always next lexicographical permutation of sequence

you can also view source code of it in libraries


2009/6/23 Ralph Boland <rpbol...@gmail.com>

>
> I have an array of objects and I need to generate all permutations.
> e.g.  for [1,2,3]   I get:
> [1,2,3]
> [1,3,2]
> [2,1,3]
> [2,3,1]
> [3,1,2]
> [3,2,1]
>
> This problem is actually easy to solve and in fact there is a purely
> iterative solution.
> However in my case I also need to solve a variant of this problem.
> In this variant the array has 2n elements grouped into n groups of two
> elements
> where each 2 element pair are equal.
> For example for array  [1,1,2,2]  I get:
> [1,1,2,2]
> [1,2,1,2]
> [1,2,2,1]
> [2,1,1,2]
> [2,1,2,1]
> [2,2,1,1]
>
> Note that in the first case I get n! permutations whereas in the
> second case
> I get  (2n)! / 2^n  permutations.  I want to generate the permutations
> efficiently.
> I particular it is unacceptable to generate the (2n)! combinations and
> then
> remove the duplicates.   I have come up only with complicated ways of
> doing this
> but I am hoping someone can post or reference a simpler solution.
> A solution that generalizes in various ways would be nice but not
> important to my
> particular problem.
>
> I will be implementing the final solution in Smalltalk (Squeak) and
> eventually in other
> languages as part of an implentation of the spine tree decomposition
> data structure.
> It will be released (in Squeak at least) under the MIT license.
>
> Thanks for any help provided.
>
> Ralph Boland
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to