Torre de Hanoi problema
El significado de los problemas
Una columna en el bloque transfiere a la C
Condición 1 - cada uno sólo puede transferir una
Condición 2 - la presión no es pequeño trozos más rápidas
Resolver
concepto principio
Los elefantes de refrigerador pregunta cargada :
1. Abra el refrigerador
2. Insertar elefante
3. Cerrar el refrigerador
En analogía cualquier bloque es n :
1. Los bloques anteriores se movieron buena
2. n bloques se mueven más allá
3. bloque Antes encima del bloque en la parte superior n
Simplificar el problema, considere mover el 123 pueden ser considerados como quiero pasar 3 está obligado a mover 12
Del mismo modo quiero mover 2, tendrá que mover 1 , esa relación
f (3) ---> f (2) ---> f (1) problemas en separada Esquema 3, 2, 1, es decir, empuje el cebador inverso
f (3) ==> f (1) + premisa (2) es 2,1 a 3 Problema
f (2) ==> f (1) 2 a condición de que emite un procesamiento de bloque
análisis de flujo
El empleador para describirlo, cada bloque tiene un trabajador responsable de
N Tres trabajadores de la capacidad de
1. El bloque de n-ésimo sólo se puede mover a cualquier puesto
2. n puede pedir a los trabajadores que le ayude en su bloque de presión proceso anterior (n-1 tratadas por los trabajadores)
3. n es el trabajo final sobre los trabajadores se desplazan a la diana n th-bloque de columnas
Prolongación de la hora de determinar qué columnas de la columna que desea mover.
Hay tres pilares título. El primer pilar empezando tercer poste de la meta, y que el resto es una columna de transferencia
La columna se puede transferir como punto de tránsito, el objetivo final es tener tres columnas.
Antes de la Etapa Tres. Sólo los dos bloques superiores se colocan en una columna de tránsito
la implementación del código
DEF HNT (índice, Inicio, MID, Fin): # último hombre único trabajo consiste en ir al final del primer bloque SI Índice == 1. : Imprimir " {} ---> {} " .formato (Inicio, fin) la cosa : # alguien para mover el bloque superior, la primera transferencia de hecho en la mitad . HNT (índice - 1 , inicio, fin, a mediados) # sí mismos para bloquear su movimiento a la columna de destino de impresión " {} - -> {} " .formato (inicio, final) # medida que las personas se mueven hacia atrás al bloque anterior, antes de la mitad, Finalizar ahora, utiliza el relé de arranque HNT (índice -. 1 , mediados, inicio, fin) Si __name__ == ' __main__ ' : HNT ( 3, " A " , " B " , " C " ) # A ---> C # A ---> B # C ---> B # A ---> C # B ---> A # B ---> C # A ---> C