E' un semplice algoritmo che si può risolvere facilmente con la ricorsione!
Ecco come si può creare un semplice programma (in C++ utilizzando una classe) in modo che l'utente inserisca il numero di dischi e che il programma dica tutte le mosse da fare per risolverlo!
-- Header --
#pragma once
class Hanoi
{
public:
CHanoi();
void spostaTorre(int i, int m, int f, int Dischi);
};
---- CPP -----
#include "Hanoi.h"
#include <iostream>
using namespace std;
CHanoi::CHanoi()
{
}
void Hanoi::spostaTorre(int i, int m, int f, int Dischi)
{
if(Dischi>1)
{
spostaTorre(i,m,f,Dischi-1);
spostaTorre(i,m,f,1);
spostaTorre(f,m,i,Dischi-1);
}
else
cout<<"Sposta il disco da " <<i <<" a " <<f; cout<<endl;
}
--- MAIN ---
include "Hanoi.h"
#include <iostream>
using namespace std;
void main()
{
int Dischi=0;
cout<<"Dimmi con quanti dischi vuoi giocare : ";
cin>>Dischi;
CHanoi *C1 = new Hanoi();
C1->spostaTorre(1,2,3,Dischi);
delete C1;
system("pause");
}
Fine