Programación General > C/C++

 Algoritmo recursivo Torres de Hanoi ??

(1/1)

Ergon:
muy buenas !!!

soy muy novato en el tema de la programacion en C++ y os pido ayuda para que me ayudaeis a interpretar un algoritmo.
Tengo que hacer el juego de las torres de Hanoi con un brazo robotico. El robot usara idioma RAPL-II

El profesor nos ha pasado esto:
-------------------------------------------------------------------------------------------------------------------------
Las Torres de Hanoi (RECURSIVA).
Esta practica trata de implementar el problema de las Torres de Hanoi de
manera recursiva. Se parte de unas condiciones iniciales conocidas (p. ex. Hay 6
piezas en una de las torres y las otras dos estan vacias) y el programa tiene que aceptar
reproducir acciones del tipo: “Mueve n piezas de la torre A a la torre B”. El algoritmo
recursivo que mueve N piezas de la Torre_A a la Torre_B, es el siguiente:


Mover_Piezas(Torre_A, Torre_B, Npiezas)
{

Torre_C= Otra_Torre(Torre_A, Torre_B)                       // Busca la torre auxiliar

Si (n!=1)
{
       Mover_Piezas(Torre_A, Torre_C, Npiezas-1);
       Cambiar_Pieza(Torre_A, Torre_B);                               // Mueve solo la pieza superior
       Mover_Piezas(Torre_C, Torre_B, Npiezas-1);
}

sinó
       Cambiar_Pieza(Torre_A, Torre_B);                               // Mueve solo la pieza superior


el tema esta en si me podrias explicar como funciona este algoritmo ya q no entiendo como trabaja.
Podrias decirme que variables deberia declarar?
"Mover_Piezas" , "Cambiar_Piezas" es una variable de estructura?

muchas gracias por adelnatado !!!!

P.D: si alguien tiene otro algoritmo donde crea q lo entenderia mejor...

eternity:
te sugiero que veas esto: http://www.solotuweb.com/fs~id~5319.html
 :alien:

Ergon:
muchas gracias por el link !!!sera de gran ayuda, aunque yo lo hago en c++ y las cosas cambian algo...

Pero una cosilla, alguien podria explicarme como se supone q deberia funcionar el algoritmo q puse??

Por ejemplo, si le digo q jugaremos con 4 piezas hace el algoritmo 4 veces. Primero cuando N=4, cuando N=3, cuando N=2... ??

gracias

eternity:
el órden del algorítmo se basa en la cantidad de discos, por lo cual para mover todos los dicos(N) de A a C pasando por B, se requieren 2^N - 1 Movimientos B)

mas info acá http://www.rodoval.com/heureka/hanoi/

Navegación

[0] Índice de Mensajes

Ir a la versión completa