Red de conocimiento informático - Conocimiento sistemático - Programación en lenguaje C de la Torre de Hanoi

Programación en lenguaje C de la Torre de Hanoi

Idea algorítmica

Para el problema de la Torre de Hanoi, cuando solo se mueve un disco, el disco se mueve directamente de la aguja A a la aguja C. Si el disco en movimiento es n (n & gt; 1), entonces Para varios pasos: mueva (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; aguja (con la ayuda de la aguja A). Cada vez que lo hagas, habrá un disco menos en movimiento, disminuyendo gradualmente. Finalmente, cuando n es 1, se completa todo el proceso de movimiento.

Por lo tanto, se puede diseñar una función recursiva para resolver el problema de la Torre de Hanoi, y todo el movimiento del disco se puede realizar mediante recursividad. El proceso de resolución de problemas es una simulación de operaciones reales.

Código de programa

# include & ltstdio.h & gt

int main()

{

int hanoi(int, char, char, char);

int n, counter

printf("Ingrese el número de discos:

scanf"); (" %d ",& ampn);

printf("\n");

counter=hanoi(n,'A','B','C') ;

Devuelve 0;

}

int hanoi(int n, char x, char y, char z)

{

int mover(char, int, char);

Si (n==1)

mover(x, 1, z);

Otro

{

Hanói(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;

}