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 <to...@hog.ecasa.avianet.cu> > 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.