Red de conocimiento informático - Descarga de software - Utilice código en lenguaje C para escribir el problema de la Torre de Hanoi y utilice la pila para implementarlo.

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)

{

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;

}