El problema de la Torre de Hanoi: Hay 4 pilares. Si el número de torres cambia a cuatro, a, b, c, d, ahora es necesario mover los n discos de a a d, y el movimiento manda. permanecer sin cambios.
Lenguaje C:
#include?lt;iostreamgt;
usando?namespace?std;
void?move(char? a,?char?b){
coutlt;lt;alt;lt;"-----gt;"lt;lt;blt;lt;endl;
void ?hannuo(int?n, ?char?a, ?char?b, ?char?c?, ?char?d){
if(1==n){
mover(a,?d);
else?if(2?==?n){
mover(a,?b);
mover(a,?d);
mover(b,?d);
else{
hannuo(n-2,?a,?c ,?d,?b);
mover(a,c);
mover(a,d);
mover(c,d);
hannuo(n-2,?b,?c,?a,?d);
int?main(){
char?a= 'a',?b='b',?c='c',?d?=?'d';
int?i;
coutlt;lt;" Por favor ingrese el número de placas";
while?(cingt;gt;i){
hannuo(i,?a,?b,?c,?d);
return?0;
Información ampliada:
Ideas para resolver problemas:
Por ejemplo, si hay cuatro pilares a, b , cyd, necesitamos mover el enésimo disco en la columna a a la columna de destino (columna d). Primero divida el piso superior en dos partes. Mueva la parte superior a la columna b y la parte inferior a la columna c. mueva el enésimo disco a la columna objetivo, luego mueva la placa del pilar c al pilar objetivo y luego mueva la placa del pilar b al pilar objetivo.
Detalles: Cuando la parte superior se mueve a la columna b, su columna de variables intermedias tiene dos opciones. Cuando la parte inferior se mueve a la columna c, solo tiene una columna de variable intermedia (porque una columna ya está ocupada por la parte superior). Lo mismo ocurre cuando b y c también se mueven a la columna de destino.