[C con Clase] Vector y permutaciones

Jose Armando Barrios Leon jose-bar en hotmail.com
Dom Ene 30 00:03:45 CET 2011



Saludos a todos.
Utilizo Visual C++. Estoy trabajando en conseguir todas las posibles permutaciones en un vector de char de 5 posiciones; combinaciones donde importa el orden, que se usen todas las letras y que no se repita ninguna letra.
Por ejemplo, tengo este vector (de menor tamaño): {a,b,c} y quiero obtener cada posible orden de las letras. En este caso seria 3! = 6 permutaciones, que serian así:{a,b,c}{a,c,b}{b,a,c}{b,c,a}{c,b,a}{c,a,b} 
He hecho una funcion algo asi:void funcionPermutacion(char v[]){	while(v[0] != 'd') //cuando la primera posicion  del vector complete un ciclo	{		mostrarVector() //una funcion que muestra en pantalla los caracteres del vector		v[2]++; //suma 1 al caracter ASCII		if(v[2] == 'd')		{			v[2] = 'a';			v[1]++;			if(v[1] == 'd')			{				v[1] = 'a';				v[0]++;			}		}        }}
Basicamente trabaja como lo haria un reloj digital. Con la funcion anterior obtengo las permutaciones, pero tambien un monton de series inservibles (con letras repetidas o letras sin usar). Se pueden comparar las cadenas obtenidas y eliminar las inservibles, pero hacer eso es poco eficiente y poco practico en un vector mucho mas grande.
Por eso, si alguien tiene una idea de como obtener esas permutaciones de una mejor manera, le agradeceria que me comunique su idea.

Att.Jose B. 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110129/27f8592b/attachment.html>


Más información sobre la lista de distribución Cconclase