hanoi w c++

0

Jestem początkującą programistką.. znalazłam pewny kod z wieżami hanoi, ale go nie rozumiem jak to wszystko jest zastosowane. Mógłby ktoś mi to wyjaśnić??? z góry dziękuję za pomoc. a poniżej wstawiam ten kod.

void hanoi(int n, int A, int B, int C, int &licznik)
{// przeklada n krazków z A korzystajac z B na C
  if (n > 0)
  {
    hanoi(n-1, A, C, B, licznik);
    cout << A << " " << C << endl;
     licznik++;
     wynik << A <<" "<< C << endl;
    hanoi(n-1, B, A, C, licznik);
  }
}

void hanoi4 (int n, int A, int B, int C, int D, int &licznik)
{
    if(n>=0 && n<2)
    {
        cout<<A<<" "<<D<<endl;
        wynik<<A<<" "<<D<<endl;
        licznik++;
    }
    else
    {
        if (n>=2)
        {
            hanoi(n-2,A,C,B,licznik);
            cout<<A<<" "<<C<<endl;
            wynik<<A<<" "<<C<<endl;

            cout<<A<<" "<<D<<endl;
            wynik<<A<<" "<<D<<endl;

            cout<<C<<" "<<D<<endl;
            wynik<<C<<" "<<D<<endl;

            licznik+=3;
             hanoi4(n-2, B, A, C, D, licznik);

        }
    }
}

0

tak, z wikipedii jest część ta pierwsza.. standardowa dla 3 słupków, nie rozumiem tej dla 4.

0

no przepraszaaam, ale "zjadłam" niechcąco jedną literkę ! :O faktycznie tragedia :P ..

0

a mógłby ktoś poprawić mi kod, bądź dać jakieś wskazówki co do wież hanoi z 4 słupkami i n krążkami?? już przy 3 krążkach źle mi przekłada te krążki

0
Kamil123456789 napisał(a):

Jestem początkującą programistką.. znalazłam pewny kod z wieżami hanoi, ale go nie rozumiem jak to wszystko jest zastosowane. Mógłby ktoś mi to wyjaśnić??? z góry dziękuję za pomoc. a poniżej wstawiam ten kod.

void hanoi(int n, int A, int B, int C, int &licznik)
{// przeklada n krazków z A korzystajac z B na C
  if (n > 0)
  {
    hanoi(n-1, A, C, B, licznik);
    cout << A << " " << C << endl;
     licznik++;
     wynik << A <<" "<< C << endl;
    hanoi(n-1, B, A, C, licznik);
  }
}

void hanoi4 (int n, int A, int B, int C, int D, int &licznik)
{
    if(n>=0 && n<2)
    {
        cout<<A<<" "<<D<<endl;
        wynik<<A<<" "<<D<<endl;
        licznik++;
    }
    else
    {
        if (n>=2)
        {
            hanoi(n-2,A,C,B,licznik);
            cout<<A<<" "<<C<<endl;
            wynik<<A<<" "<<C<<endl;

            cout<<A<<" "<<D<<endl;
            wynik<<A<<" "<<D<<endl;

            cout<<C<<" "<<D<<endl;
            wynik<<C<<" "<<D<<endl;

            licznik+=3;
             hanoi4(n-2, B, A, C, D, licznik);

        }
    }
}

a mógłby ktoś poprawić mi kod, bądź dać jakieś wskazówki co do wież hanoi z 4 słupkami i n krążkami?? już przy 3 krążkach źle mi przekłada te krążki

0

Podłączę się do tematu, czy ktoś jest w stanie przerobić tą funkcję, tak aby obsługiwała dla 5 wieżyczek?

void Przenies4(int skad, int temp1, int temp2, int dokad, int ile)
{
    if (ile == 1)
    {
        cout<<skad<<" "<<dokad<<endl;
    }
    else if (ile == 2)
    {
        cout << skad << " " << temp1 << endl;
        cout << skad << " " << dokad << endl;
        cout << temp1 << " " << dokad << endl;
    }
    else
    {
        Przenies4(skad, temp2, dokad, temp1, ile - 2);
        cout << skad << " " << temp2 << endl;
        cout << skad << " " << dokad << endl;
        cout << temp2 << " " << dokad << endl;
        Przenies4(temp1, skad, temp2, dokad, ile - 2);
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1