Torre de problema Hanoi
O significado de problemas
Uma coluna no bloco transferido para o C
Condição 1 - Cada só pode transferir um
Condição 2 - a pressão não é pequena pedaços mais rápidos
resolve
princípio Concept
Elefantes refrigerador questão carregado :
1. Abra a geladeira
2. Insira elefante
3. Feche a geladeira
Em analogia qualquer bloco um é N :
1. Os blocos acima são movidos bom
2. n blocos mover passado
3. Antes de bloco acima do bloco no topo n
Simplificar o problema, considerar que se deslocam a 123 podem ser considerados como eu quero passar 3 é obrigado a mover 12
Da mesma forma que deseja mover 2, terá que se mover 1 , essa relação
f (3) ---> f (2) ---> f (1) em questões Esquema 3, 2, 1, isto é, separado impulso iniciador inverso
f (3) ==> f (1) + premissa (2) é de 2,1 a 3 Problema
f (2) ==> f (1) 2, desde que as questões de um processamento de bloco
análise de fluxo
O empregador para descrevê-lo, cada bloco tem um trabalhador responsável por
N Três trabalhadores a capacidade de
1. O bloco de ordem n só pode ser movido para qualquer pós
2. n pode pedir aos trabalhadores para ajudá-lo em seu bloco de pressão do processo acima (n-1 tratados para os trabalhadores)
3. n é o trabalho final sobre os trabalhadores mover-se para o bloco de colunas alvo n-ésima
Movendo-se o tempo para determinar quais colunas dos quais coluna que você deseja mover.
Há título três pilares. O primeiro pilar começando terceiro poste da baliza, e que o resto é uma coluna de transferência
A coluna pode ser transferido como um ponto de trânsito, a meta final é ter três colunas.
Antes do Passo Três. Somente as parte superior dois blocos são colocados numa coluna de trânsito
implementação de código
DEF HNT (index, Iniciar, MID, End): # último homem único trabalho é para ir para o fim do primeiro bloco IF índice == 1. : Imprimir " {} ---> {} " .format (Start, End) a outra pessoa : # alguém para mover o bloco superior, a primeira transferência feita em meados do . HNT (índice - 1 , Start, End, mid) # -se para bloquear sua mudança para a coluna de destino impressão " {} - -> {} " .format (início, fim) # como as pessoas se movem de volta para o bloco anterior, antes do meio, Fim de agora, utilizar o relé de arranque HNT (índice -. 1 , meados de, início, fim) IF o __name__ == ' __main__ ' : HNT ( 3, " A " , " B " , " C " ) # A ---> C # A ---> B # C ---> B # A ---> C # B ---> A # B ---> C # A ---> C