using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Permutation_Sort { class Program { static void Main(string[] args) { List listChar = new List(); listChar.Add(new Caracter('A')); listChar.Add(new Caracter('B')); listChar.Add(new Caracter('C')); Console.WriteLine("Combinations of A, B and C are"); List permutation = Permutar(listChar, listChar.Count); foreach (string p in permutation) Console.WriteLine(p); } public static List Permutar(List elem, int n) { List permutation = new List(); Queue a1 = new Queue(); List vacia = new List(); a1.Enqueue(new Data(vacia, n)); while (a1.Count > 0) { Data d = a1.Dequeue(); if (d.n == 0) { string pActual = Concatenar(d.actual); if (!permutation.Contains(pActual)) { permutation.Add(pActual); } } else { for (int i = 0; i < elem.Count; i++) { if (!d.actual.Contains(elem[i])) { List lis = new List(); for (int k = 0; k < d.actual.Count; k++) { lis.Add(d.actual[k]); } lis.Add(elem[i]); Data d1 = new Data(lis, d.n - 1); a1.Enqueue(d1); } } } } return permutation; } static string Concatenar(List listaCaracteres) { string cadena = ""; for (int i = 0; i < listaCaracteres.Count; i++) { cadena += listaCaracteres[i].caracter; } return cadena; } } class Data { public List actual; public int n; public Data(List actual, int n) { this.actual = actual; this.n = n; } } class Caracter { public char caracter; public Caracter(char caracter) { this.caracter = caracter; } } }