[ Foro de Pascal ]

ayuda: permutaciones de una cadena

01-Mar-2014 19:21
Invitado (duende25)
5 Respuestas

buenas queria pedir el favor al profesor si puede orientarme en como puedo realizar un programa que me permita generar todas las permutaciones de una cadena de caracteres?

y si podias explicarme que diferencia hay si se le asigna una ordenacion a los caracteres asignado un numero unico que denote la posicion de su ordenamiento?

agradezco cualquier pista y detalles que puedan brindarme ...


02-Mar-2014 19:58
Nacho Cabanes (+83)

Mira aquí una introducción al backtracking:

http://nachocabanes.blogspot.com.es/2013/04/busqueda-exhaustiva-backtracking.html

Y aquí justo lo que preguntas:

http://nachocabanes.blogspot.com.es/2013/04/busqueda-exhaustiva-acercamiento.html

;-)


03-Mar-2014 20:18
Invitado (duende25)

hola nacho, tu link es muy avanzado para mi, queria tu ayuda a un nivel mas bajo de priciante, si puede ser te lo agradezco muchisimo


06-Mar-2014 11:34
Nacho Cabanes (+83)

Ok, si quieres que hagamos algo "exclusivo" para ese problema, intentando que sea lo más sencillo posible, vamos primero a intentar simplificar el problema...

Si partes de una cadena como "hoy", confírmame que la solución que buscas es

hoy
hyo
ohy
oyh
yho
yoh

Es decir, todos los posibles cambios de orden de las letras, sin repetir ninguna. Si hacemos un algoritmo genérico, ten en cuenta que te puede dar casos duplicados si hay letras duplicadas. Por ejemplo, para "yo" deberías obtener "oy" y "yo", porque sólo hay dos cambios de orden, pero para "oo" obtendrás "oo" y "oo", al menos en un primer acercamiento, si no haces un proceso adicional que elimine duplicados.

Además, ¿qué debes hacer con los resultados? ¿Mostrarlos en pantalla? ¿Guardarlos en alguna estructura?


06-Mar-2014 16:08
Invitado (duende25)

Gracias Nacho, ya lo resolvio el profesor de la catedra pues los estudiantes teniamos muchas dudas en este ejercicio que habia dejado de analisis como practica al examen, pero al final lo resolvio. Que buen foro es este.


08-Mar-2014 12:32
Nacho Cabanes (+83)

Pues comparte la solución, para que otros puedan aprender de ella!  ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)