"El juego del pequeño monje" - Torre de Hanoi

Según la leyenda, había un templo en la montaña, y había un monje joven y un monje anciano en el templo. Un día el pequeño aprendiz estaba libre, así que fue con el viejo monje y le preguntó si había algún juego para ejercitar su inteligencia. El viejo monje preparó tres pilares para el pequeño monje y dijo: Primero, solo hay un cuenco en el primer pilar. El cuenco se trasladó al tercer pilar, y el pequeño monje lo completó fácilmente; luego el anciano monje puso tres cuencos en el primer pilar, y los tres cuencos se colocaron en orden de pequeño a grande. Se le pidió al pequeño monje que moviera estos tres cuencos del primer pilar al tercer pilar, pero el cuenco pequeño debe estar encima del grande durante el proceso de movimiento, y solo se puede mover un cuenco a la vez. El pequeño monje pensó por un momento , Completó el objetivo; pero al final el viejo monje dijo, ¿y si te doy 64 cuencos? El pequeño monje se puso a pensar. ¿Sabes cómo hacerlo inteligentemente?

Torre de Hanoi (Torre de Hanoi), también conocida como la Torre de Hanoi, derivada de una antigua leyenda india. Cuando Brahma creó el mundo, hizo tres pilares de diamantes. En un pilar, se apilaron 64 discos de oro en orden de tamaño de abajo hacia arriba. El Gran Brahma ordenó al Brahmán que volviera a colocar el disco en otro pilar en orden de tamaño desde abajo. También estipula que en cualquier momento, el disco no se puede agrandar en el disco pequeño, y solo se puede mover un disco entre los tres pilares a la vez. ¿Qué tengo que hacer?

1. Mover una placa : (1 paso)

Inserte la descripción de la imagen aquí
Los niños lo saben, por supuesto, déjalo ir. A -> C

Inserte la descripción de la imagen aquí

2. Mueva dos placas : (3 pasos)

Inserte la descripción de la imagen aquí
A1- -> B, A2 - -> C:

Inserte la descripción de la imagen aquí
A1 -> C:
Inserte la descripción de la imagen aquí
3. Mueve tres placas : (7 pasos)
Inserte la descripción de la imagen aquí
A1 -> C, A2 -> B:
Inserte la descripción de la imagen aquí
A1 -> B, A3 -> C:
Inserte la descripción de la imagen aquí
A1 -> A, A2-- > C, A1 -> C
Inserte la descripción de la imagen aquí
Resumimos las reglas anteriores :

Mover un plato: 1 paso = 2 ^ 1-1
Mover dos platos: 3 pasos = 2 ^
2-1 Mover tres platos: 7 pasos = 2 ^ 3-1

mover 64 platos: 2 ^ 64-1

Hagamos un cálculo simple. La computadora procesa 64 placas durante casi 300 años.
Así que simplemente generamos los resultados de 1, 2 y 3 placas.

package test24;

public class testDemo {
    
    
    public static void move (char pos1,char pos2) {
    
    
        System.out.print(pos1+" --> "+pos2+" ");//模仿鼠标的移动
    }
    /**
     *
     * @param n       代表盘子的数目
     * @param pos1    代表第一根柱子  A
     * @param pos2    代表第二根柱子  B
     * @param pos3    代表第三根柱子  C
     */
    public static void HanoiTower (int n,char pos1,char pos2,char pos3) {
    
      //n代表盘子的数目
        if(n == 1) {
    
    
            move(pos1,pos3);
        } else {
    
    
            HanoiTower(n-1,pos1,pos3,pos2);   // pos1 上的东西通过 pos3 传到 pos2 上
            move(pos1,pos3);
            HanoiTower(n-1,pos2,pos1,pos3);
        }
    }
    public static void main(String[] args) {
    
    
        HanoiTower(1,'A','B','C');
        System.out.println();
        HanoiTower(2,'A','B','C');
        System.out.println();
        HanoiTower(3,'A','B','C');
        System.out.println();
    }

}

resultado de la operación:
Inserte la descripción de la imagen aquí

Si quieres probar 64 platos, ¡puedes probarlo tú mismo! ! !

Supongo que te gusta

Origin blog.csdn.net/qq_45658339/article/details/108876299
Recomendado
Clasificación