Rešujemo naslednji problem: dani so trije stebri, a, b in c. Na stebru a je n obročev. Vsi obroči so različne velikosti. Problem je poiskati zaporedje operacij, s katerimi prenesemo vse obroče na steber c. Prenašati smemo samo po en obroč naenkrat. Steber b lahko uporabljamo kot pomožno vmesno odlagališče. Dodatna omejitev je, da morajo biti vedno obroči na vsakem stebru urejeni po velikosti. To pomeni, da se ne sme pojaviti večji obroč na manjšem.
V splošnem lahko rešitev problema za n obročev sestavimo iz treh faz:
#include <iostream>
using namespace std;
void hanoi (int n, char zacetni, char odlagalisce, char koncni)
{
if (n > 0)
{
hanoi(n-1,zacetni,koncni,odlagalisce);
cout << "Prenesi obroc iz stebra " <<zacetni << " na steber " << koncni << endl;
hanoi(n-1,odlagalisce, zacetni, koncni);
}
}
void main()
{
int N;
cout << "Vpisi stevilo stolpičev? ";
cin >> N;
hanoi(N,'A','B','C');
system("pause");
}