(1,2,3,4)
1,
2,
3,
4,
12,
13,
14,
23,
24,
34,
123,
124,
134,
234,
1234
Este es el código:
Código:
#include <stdio.h> #include <time.h> #include <stdlib.h> #include <string.h> int contador = 0; int main() { int i; int j; int r; int zonas = 4; /* Array con el indice de cada packet */ int array[32] = {1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15,16,17,18,19,20, 21,22,23,24,25,26,27,28,29,30, 31,32}; int grupo = 0; while (grupo < zonas) { //printf("Combinaciones de %d elementos\n", grupo+1); int posicion; for (posicion = 0; posicion < zonas; posicion++) { if ((posicion + (grupo + 1)) <= zonas) { int ultimo = 0; int hueco = 0; while (ultimo < (zonas - 1)) /* Hasta que no terminemos con esa posicion */ { int elementos_contados = 0; int pivote = posicion; printf("%d ", array[pivote]); bool hueco_pasado = false; while (elementos_contados < grupo) /* Hasta que no terminemos con esa combinacion */ { pivote++; if (hueco == 0) { printf("%d ", array[pivote]); elementos_contados++; } else { if (hueco_pasado == false) { pivote = pivote + hueco; hueco_pasado = true; } elementos_contados++; printf("%d ", array[pivote]); } } contador++; printf("\n"); hueco++; ultimo = pivote; if (grupo == 0){ultimo = 100;} } } } grupo++; } printf("Numero de combinaciones %d\n", contador); scanf("%d\n", i); return 0; }
Pero el resultado es
1,
2,
3,
4,
12,
13,
14,
23,
24,
34,
123,
124,
134,
234,
1234
Se salta esa combiación, podéis ayudarme?, no soy capaz de afinarlo