Sabtu, 20 Desember 2014

Pemrograman - Menara Hanoi

Algoritma dengan teknik Working-Backward :
1. Pindahkan (n-1) piringan-piringan atas ke pilar antara.
2. Pindahkan piringan terakhir ke pilar tujuan

3. Ulangi 2 dan 3, hingga selesai.

Disebut teknik Working-Backward, karena berjalan mundur dahulu, yaitu :
1. Untuk memindahkan n piringan, pikirkan dahulu cara 
    memindahkan (n-1) piringan.

2.Ulangi langkah 2 untuk (n-1),(n-2),...

3. Pindahkan 1 piringan, yaitu piringan terakhir.

Dalam pemecahan Menara Hanoi ini, tersirat pemecahan dengan teknik Sub-Goal !

Contoh penggunaan Cara Rekursif pada masalah Menara Hanoi

Menara (int N, char Awal, char Akhir, char Antara)
{
     If (N==1) 
        printf (“Pindahkan 1 dari : %c ke %c\n”,Awal,Akhir);
    else {
        Menara (N-1,Awal,Antara,Akhir);
        printf (”Pindahkan %d dari %c ke %c\n”, N, Awal, Akhir);
        Menara(N-1, Antara, Akhir, Awal);
    }
}
void main()
{
    int N;
   cout << ”Banyak Piringan ? ”;
   cin >> N ;
    Menara(N,’L’,’R’,’M’);       /*Left, Right, Middle*/
}.

Tidak ada komentar:

Posting Komentar