torres de hanoi
Publicado por carolina (1 intervención) el 24/07/2007 02:18:26
hola necesito saber como resolver la torres de hanoi en builder 6.0 pero con cuatro torres y 10 discos
Valora esta pregunta


0



#include <vcl.h>#include <iostream>#include <sstream>#include <string>#pragma hdrstop#include "Unit1.h"#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;using namespace std;
//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{}// Función recursiva para resolver las Torres de Hanóivoid Hanoi(int n, int origen, int destino, int auxiliar1, int auxiliar2)
{if (n == 1)
{ // Mover el disco de la torre de origen a la torre de destinoostringstream oss;
oss << "Mover disco 1 de la torre " << origen << " a la torre " << destino << "\r\n";
Form1->Memo1->Lines->Add(oss.str().c_str());
return;
} // Mover n-2 discos de la torre de origen a la torre auxiliar1Hanoi(n - 2, origen, auxiliar1, auxiliar2, destino);
// Mover el disco n-1 de la torre de origen a la torre auxiliar2ostringstream oss;
oss << "Mover disco " << n - 1 << " de la torre " << origen << " a la torre " << auxiliar2 << "\r\n";
Form1->Memo1->Lines->Add(oss.str().c_str());
// Mover n-2 discos de la torre auxiliar1 a la torre destinoHanoi(n - 2, auxiliar1, destino, auxiliar2, origen);
// Mover el disco n de la torre de origen a la torre auxiliar2oss.str("");
oss << "Mover disco " << n << " de la torre " << origen << " a la torre " << auxiliar2 << "\r\n";
Form1->Memo1->Lines->Add(oss.str().c_str());
// Mover n-2 discos de la torre destino a la torre auxiliar1Hanoi(n - 2, destino, auxiliar1, auxiliar2, origen);
// Mover el disco n-1 de la torre auxiliar2 a la torre destinooss.str("");
oss << "Mover disco " << n - 1 << " de la torre " << auxiliar2 << " a la torre " << destino << "\r\n";
Form1->Memo1->Lines->Add(oss.str().c_str());
// Mover n-2 discos de la torre auxiliar1 a la torre destinoHanoi(n - 2, auxiliar1, destino, auxiliar2, origen);
}void __fastcall TForm1::Button1Click(TObject *Sender)
{Memo1->Clear();
int numDiscos = 10;Hanoi(numDiscos, 1, 4, 2, 3);
}
