• Sábado 14 de Diciembre de 2024, 18:34

Autor Tema:  Torres hanoi problema con par o impar  (Leído 949 veces)

Ergon

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Torres hanoi problema con par o impar
« en: Miércoles 28 de Octubre de 2009, 13:02 »
0
bueno, estoy haciendo una practica de las torres de hanoi en la que un brazo robotico tiene que solucionarlo.

Pero tengo un problemalla con el algoritmo recursivo. (Perdonad que este en catalan pero creo q lo entendereis sin problemas)

if ((torre1->nom == 'A' || torre1->nom == 'B') && (torre2->nom == 'A' || torre2->nom == 'B'))
      torreAux=&torreC;
   else if((torre1->nom == 'A' || torre1->nom == 'C') && (torre2->nom == 'A' || torre2->nom == 'C'))
      torreAux=&torreB;
   else
      torreAux=&torreA;

   if(npeces!=1){
      MourePeces(torre1, torreAux, npeces-1);
      printf("n1er: Canviar la peça de la torre %c a la torre %c", torre1->nom, torre2->nom);
      CanviarPeca(torre1, torre2);
      MourePeces(torreAux, torre2, npeces-1);
   }
   else{
      printf("n2n: Canviar la peça de la torre %c a la torre %c", torre1->nom, torre2->nom);
      CanviarPeca(torre1, torre2);
   }
}

Esto me funciona para cuando el numero de piezas es par. Pero cuando el numero de piezas es impar las torres hay que cambiarlas.

Es decir. Si yo tengo 2 piezas muevo la primera a la torre auxiliar, la segunda al destino y la primera a destino. Y se acabo.
Si yo tengo 3 piezas la primera tiene que ir a destino, la segunda a auxiliar, la primera a auxiliar, la tercera a destino, etc...

Como veis el primer movimiento varia para torre auxiliar y destino.

Podeis darme algo de luz al problema?? me estoy volviendo loco !!!   :hitcomp: