Algoritmia - Generar todas las combinaciones

 
Vista:

Generar todas las combinaciones

Publicado por Antonio Nacarino (1 intervención) el 12/10/2002 02:16:35
Hola, alguien sabe algún algoritmo para generar, a partir de un vector (1..n), todas las combinaciones posibles de sus elementos? P.ej.: dado el vector (1,2,3) se quiere hallar: 123 132 213 231 312 321
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Generar todas las combinaciones

Publicado por pablo caballero (4 intervenciones) el 14/11/2002 06:25:23
Te paso el codigo en C

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
33
34
35
36
37
void miFuncion(int,int*);
 
int array[] = {1,2,3};
 
void main()
{
 
	int *aAux = (int *)calloc(sizeof(array),1);
 
	miFuncion(1,aAux);
 
}
 
void miFuncion(int pos, int *aAux)
{
	int tamVec = sizeof(array)/sizeof(int);
	if(pos<tamVec)
	{
		for(int i=0;i<tamVec;i++)
		{
			if(0==aAux[i])
			{
				aAux[i] = pos;
				miFuncion(pos+1,aAux);
				aAux[i] = 0;
			}
		}
	}
	else
	{
		for(int i=0;i<tamVec;i++)
		{
			printf("%d",aAux[i]);
		}
		printf("\n");
	}
}

Como te daras cuenta este algoritmo no imprime los valores en si sino que imprime las diferentes secuencias de subindices

Cualquie consulta mandame un correo

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar todas las combinaciones

Publicado por Pablo Caballero (4 intervenciones) el 14/11/2002 06:43:23
en vez de if(pos<tamVec) va if(pos<=tamVec) (menor o igual)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sobre tu correo

Publicado por Luz María Luna Sandoval (1 intervención) el 17/06/2004 00:41:22
Hola mi nombre es Luzma L y quisiera que me ayudaras con un problema que tengo en cuanto a combinaciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar todas las combinaciones, de otra manera

Publicado por Programador (1 intervención) el 05/12/2002 11:27:13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//este codigo es bastante más sencillo que el anterior (con todo mi respeto a //Pablo Caballero), te lo paso en C, usando lo más básico que se me ha //ocurrido,te lo explicaré paso a paso
#include <stdio.h>
void main(){//estas primeras limneas son convenciones para el lenguaje C
int array[n],i,j;//n es el numero de elementos que contendra el vector (faltan
		 //de definir dicho numero así como los elementos)
for(i=0;i<=n;i++)//hacemos un bucle que recorrerá los elementos del vector
	{
	printf(\"%d\",array[i]);//imprimimos el elemento del vector que toca
	for(j=0;j<=n;j++)//volvemos a recorrer el vector
		if(j!=i)//si coinciden los elementos no nos vale porque ya lo
			//hemos imprimido antes
			printf(\",%d\"array[j]);//imprimimos lo que queda del
					      // vector
	}
}//estaras de acuerdo en que es bastante más sencillo ¿no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generar todas las combinaciones, de otra manera

Publicado por yo (1 intervención) el 05/12/2002 11:29:44
esta muy bien pero no funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar