Un millón de gracias, José, es lo que necesitaba.

 

Saludos,

 

Ing. Tomás Corrales Lemoine

 

De: [email protected] [mailto:[email protected]] En nombre de Jose
Selesan
Enviado el: Miércoles, 14 de Septiembre de 2011 02:49 p.m.
Para: [email protected]
Asunto: [puntonet] Algoritmo para permutaciones

 

Hola Tomás. Con una simple recursividad lo podés resolver:

 

private IEnumerable<string> Permutaciones(IEnumerable<string> lista)

        {

            if (lista.Count() == 1) return lista;

            var resultado = new List<string>();

            foreach (var elemento in lista)

            {

                var listaPermutada = Permutaciones(lista.Where(t =>
!t.Equals(elemento)));

                foreach(var permutacion in listaPermutada)

                resultado.Add(elemento + permutacion);

            }

            return resultado;

        }

 

Saludos

Lic. José Selesan

 

2011/9/14 Tomás Corrales Lemoine <[email protected]>

Hola colegas.

 

¿Alguien me podría ayudar con algún algoritmo para obtener todas las
permutaciones posibles de un conjunto finito cualquiera? Por ejemplo, para
el conjunto de 4 elementos ABCD las posibles permutaciones serían:

 

1.       ABCD

2.       ABDC

3.       ACBD

4.       ACDB

5.       ADBC

6.       ADCB

7.       BACD

8.       BADC

9.       BCAD

10.   BCDA

11.   BDAC

12.   BDCA

13.   CABD

14.   CADB

15.   CBAD

16.   CBDA

17.   CDAB

18.   CDBA

19.   DABC

20.   DACB

21.   DBAC

22.   DBCA

23.   DCAB

24.   DCBA

 

Es decir, la cantidad de permutaciones sería igual al factorial de la
cantidad de elementos del conjunto. En este caso 4! = 4 x 3 x 2 x 1 = 24.
Agradecería cualquier sugerencia. Gracias.

 

Saludos

 

Ing. Tomás Corrales Lemoine


-- 
Aeropuerto Internacional Frank País García de Holguín. 

 



-- 
Aeropuerto Internacional Frank País García de Holguín. 


 
Aeropuerto Internacional Frank País García de Holguín.



Responder a