algoritmo Python - solução bem recursiva - Torre de problema Hanoi

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

 

Acho que você gosta

Origin www.cnblogs.com/shijieli/p/12606985.html
Recomendado
Clasificación