Combinaciones de tamaño N
Crea un método genérico que devuelva todas las combinaciones de tamaño n de una colección que ya está ordenada. Conserva el orden de entrada de los elementos dentro de cada combinación y devuelve las combinaciones en orden lexicográfico ascendente. Los elementos pueden ser números, cadenas de texto o cualquier otro tipo de elemento compatible con el código inicial proporcionado.
Ejemplos
Program.Combo(new int[] { 1, 2, 3, 4 }, 1) ➞ new int[][] { new int[] { 1 }, new int[] { 2 }, new int[] { 3 }, new int[] { 4 } }
Program.Combo(new int[] { 1, 2, 3, 4 }, 2) ➞ new int[][] { new int[] { 1, 2 }, new int[] { 1, 3 }, new int[] { 1, 4 }, new int[] { 2, 3 }, new int[] { 2, 4 }, new int[] { 3, 4 } }
Program.Combo(new int[] { 1, 2, 3, 4 }, 5) ➞ new int[][] { }
Program.Combo(new int[] { 1, 2, 3, 4 }, 0) ➞ new int[][] { new int[] { } }Notas
- El orden lexicográfico compara primero los primeros elementos:
[1, 2]aparece antes que[2, 4]. Cuando los primeros elementos coinciden, se comparan los segundos:[1, 2]aparece antes que[1, 3], y así sucesivamente. - Devuelve una colección externa vacía si
nsupera la longitud de la entrada. - Devuelve una combinación vacía si
nes0, porque existe exactamente una combinación de longitud cero.