fbpx

Problema #2527 – hanoi – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa