Estrellamos el menu (on = habilitado y off=inhabilitado[proximamente]) .. Sigue Mandando tus susper mensajitos....en guate-->. claro tigo telefonica

Buscar

¡Haga de esta pagina su inicial!

Sitios Encontrados

jueves, 5 de marzo de 2009

Torres de hanoi

Todos los estudiantes de ciencias de la computaciono pues o (ingenieria en sistema...s.jaja) deben lidiar ciertos problemas clasicos. El de las torres de hanoi (vea la figura) es uno de los mas famosos.
La leyenda es que, en un templo del lejano oriente, los monjes intentaron mover una pila de discos de una espiga a otra. La pila incial tiene 64 discos en una espiga, dispuesto de abajo arriba por tamaño mayor a menor. Los monjes intentan mover la pila de esta espiga a una segunda, teniendo como restricciones que se mueva un disco a la vez y que en ningun momento puede ponerse un disco mayor sobre uno menor. Hay una tercera espiga para colocar discos temporlmente.
Supuestamente el mundo terminara cuando los monjes terminen su tarea, por lo que tenemos pocos incentivos para yudarlos ..jajajajaa..&& +++,,, ..
Supongamos que los monjes intentan mover los discos de la espiga 1 al espiga 3.
Deseamos Desarollar un algoritmo que imprima la secuencia precisa de tranferencia de discos.
Si tuvieramos que abordar este problema segun los metodos convencionales, pronto estariamos atorados con el manejo de los discos.

En cambio, si lo atacamos teniendo en mente la recursion, pronto se vuelve mas manejable.

El movimiento de "n" discos puede verse en terminos del movimiento de solo "n - 1" discos(de ahi la recursion), como sigue:

A)- Mueva "n - 1" discos de la espiga 1 a la 2, empleando la 3 como area temporal para colocarlos.
B)- Mueva el ultimo disco(mayor) de la espiga 1 a la 3.
C)- Mueva "n - 1" discos de la espiga 2 a la 3,usando la 1 como area temporal para almacenarlos.

Este proceso terminaria cuando la ultima tarea comprende el movimiento de "n = 1" discos, es decir, el caso base.
Esto se logra simplemente moviendo el disco, sin necesidad del area temporal de almacenamiento.
Aca biene lo importante...jajaja Escriba un programa que resuelva el problema de las torres de hanoi, utilizando una funcion recursiva con cuatro parametros:

a)- Cantidad de discos amover.
b)- La espiga en la que se encuentra inicialmente.
c)- La espiga a la que habra que moverlos.
d)- La espiga que sera el area de almacenamiento temporal.

Su programa debera imprimir las instrucciones con las que se moveran los discos de la espiga origen a la destino. Por ejemplo, para mover una pila de tres discos de la espiga 1 a la 3, su programa debera imprimir la siguiente serie de movimientos:

1 -> 3(esto significa mover un disco de la espiga 1 a la 3)
1 -> 2
3 -> 2
1 -> 3
2 -> 1
2 -> 3
1 -> 3
para C ++ seria asi: foto + grande
para C# seri asi:foto + grande
Nota: lo importante es que entiendas las funciones

2 comentarios:

BLAIDER200 dijo...

Hola que tal esta buenisismos tus tutoriales excelente s de verdad , quisiera saber una duda que tengo desde hace mucho como hacer las torres de hanoi en visual c++ pero en wondows fors es decir en modo grafico??? salu2

BLAIDER200 dijo...

Hoa que tal estan increibles tus tutoriales de verdad excelentes, tengo una duda como hacer las torres de hanoi en visual c++ pero en windows forms es decir en modo grafico??? saludos