No entiendo muy bien lo que buscas a pesar de los comentarios anteriores. Pero me da la impresión que lo que quieres es obtener
combinaciones sin repetición.
Si tienes A, B, C
Sería
AB
AC
BC
Si tienes
A, B, C, D, E
(
y en grupos de 3 en 3)
Sería :
A B C
A B D
A B E
A C D
A C E
A D E
B C D
B C E
B D E
C D E
En cuyo caso esto obtendría las combinaciones sin repetición:
List
<string> Matriz
= new List
<string>(); List
<string> Elementos
= new List
<string>();
Elementos
.AddRange(new List
<string>() { "A",
"B",
"C",
"D",
"E" }); IEnumerable<string> pairsCol = Enumerable.Empty<string>();
pairsCol = from string value1 in Elementos
from string value2 in Elementos
select string.Join(Environment.NewLine, (from value3 in Elementos
where
(value1 != value2) &&
(value1 != value3) &&
(value2 != value3) &&
(Convert.ToChar(value2) > Convert.ToChar(value1)) &&
(Convert.ToChar(value3) > Convert.ToChar(value2))
select string.Format("{0} {1} {2} ", value1, value2, value3)));
List
<string> ClearRep
= new List
<string>(); Matriz.Clear();
foreach (string pairs in pairsCol) {
foreach (string line
in pairs
.Split(new string[]{ Environment
.NewLine}, StringSplitOptions
.RemoveEmptyEntries)) {
Matriz.Add(line);
}
}
Console.WriteLine("Número de combinaciones: {0}", Matriz.Count);
Console.WriteLine(string.Join(Environment.NewLine, Matriz));
Console.ReadLine();
Como información extra, para calcular el número de combinaciones sin repetición se hace de la siguiente forma:
Cm,n = m!/(n! * (m-n)!)
donde
m! es el factorial de m
n! es el factorial de n
(m-n)! es el factorial de (m-n)
Por ejemplo:
Elementos = A, B, C, D, E (que son 5)
Grupos= de 3 en 3
C5,3 = 5!/(3! * (5-3)!)= 10Espero te sirva
Chau