Utilice código en lenguaje C para escribir el problema de la Torre de Hanoi y utilice la pila para implementarlo.
Idea algorítmica
Para el problema de la Torre de Hanoi, cuando solo se mueve un disco, mueva el disco directamente de la aguja A a la aguja C. Si el disco en movimiento es n (n>1), se divide en varios pasos: mover (n-1) discos de la aguja A a la aguja B (con la ayuda de la aguja C, mueva el último disco de la aguja A a la aguja); C; los (n-1) discos de la aguja B se mueven a la aguja C (con la ayuda de la aguja A). Cada vez que se hace, el número de discos en movimiento disminuye en uno y, finalmente, cuando n es 1, se completa todo el proceso de movimiento.
Por lo tanto, para resolver el problema de la Torre de Hanoi, se puede diseñar una función recursiva y utilizar la recursividad para realizar todo el movimiento del disco. El proceso de resolución del problema es una simulación de operaciones reales.
Código de programa
#include
int main()
{
int hanoi(int,char,char,char);
int n,counter;
printf("Ingrese el número de discos: ");
scanf ("%d",&n);
printf("\n");
counter=hanoi(n,'A','B','C');
retorna 0;
}
int hanoi(int n,char x,char y,char z)
{ p>
int mover(char,int,char);
if(n==1)
mover(x,1,z);
else
{
hanoi(n-1,x,z,y);
mover(x,n,z);
hanói(n-1,y,x,z);
}
devuelve 0;
}
int move(char getone,int n,char putone)
{
static int k=1;
printf("%2d:%3d # % c---%c\n",k,n,getone,putone);
if(k++%3==0)
printf("\n");
devuelve 0;
}