419
Turnurile din Hanoi este un joc matematic sau, dacă vreți, un puzzle. Este format din trei tije A, B și C și un număr variabil de discuri, de diferite diametre. Inițial discurile sunt așezate în ordine descrescătoare a diametrelor pe tija A, de la vârf către bază, astfel încât să formeze un turn.
Exemplu
hanoi.in
2
hanoi.out
3 A->B A->C B->C
Explicație

#include <bits/stdc++.h>
using namespace std;
ifstream cin("hanoi.in");
ofstream cout("hanoi.out");
void hanoi(int n , char a , char b , char c)
{
if(n > 0)
{
hanoi(n - 1 , a , c , b);
cout << a << "->" << c << '\n';
hanoi(n - 1 , b , a , c);
}
}
int main()
{
int n;
cin >> n;
char a = 'A' , b = 'B' , c = 'C';
int put = 1;
for(int i = 0 ; i < n ; ++i)
put *= 2;
cout << put-1 << endl;
hanoi(n , a , b , c);
return 0;
}
Comentarii