Advertisement
paulogp

Torres de Hanoi (solução)

Jul 13th, 2011
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.27 KB | None | 0 0
  1. /* Algoritmo gerador das soluções do jogo Torres de Hanoi.
  2. O problema das Torres de Hanoi apareceu na Europa no século XIX. Consiste em três hastes verticais (esquerda, meio e direita). Na haste da esquerda estão empilhados vários discos de diâmetro decrescente. Pretende-se mover os discos, um a um, da haste da esquerda para a haste da direita, usando a haste do meio como auxiliar, de forma que, em qualquer movimento, nunca fique um disco de diâmetro maior sobre outro de diâmetro menor. */
  3.  
  4. // Apple Xcode
  5.  
  6.  
  7. #include <stdio.h>
  8.  
  9. void func_output_mov(int the_ini, int the_fin)
  10. {
  11.     // movimento dos discos
  12.     char the_haste[3][15] = {"da esquerda", "do meio", "da direita"};
  13.     printf("mover disco da haste %s para a haste %s\n", the_haste[the_ini], the_haste[the_fin]);
  14. }
  15.  
  16. void func_mov(int the_k, int the_ini, int the_fin, int the_aux)
  17. {
  18.     // funcao recursiva das torres de hanoi para k discos e hastes
  19.     if (the_k > 0)
  20.     {
  21.         func_mov(the_k - 1, the_ini, the_aux, the_fin);
  22.         func_output_mov(the_ini, the_fin);
  23.         func_mov(the_k - 1, the_aux, the_fin, the_ini);
  24.     }
  25. }
  26.  
  27. int main (int argc, const char * argv[])
  28. {
  29.     // torres de hanoi
  30.     int the_n;
  31.  
  32.     printf("N de discos: ");
  33.     scanf("%d", &the_n);
  34.  
  35.     // parametros iniciais
  36.     func_mov(the_n, 0, 2, 1);
  37.  
  38.     return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement