24/01/2012, 02:03
|
| | Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 14 años, 3 meses Puntos: 0 | |
Falla por poco Hola, estoy haciendo un algoritmo en c que calcule todas las combinaciones de los elemtnos de un array:
(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 |