C Hanoi Problems

Posted: October 13, 2014 in Algorithms, C
Tags: , , ,

Özyinelemeli yaklaşım olan bu örnek Fransız Matematikçi E.Luke tarafından bulunmuştur.

Örnekle açıklamak gerekirse A,B,C gibi dik konumda yerleştirilmiş 3 tane çubuk ve x sayıda disk vardır.

Başlangıç durumda diskler aşağıdaki gibidir.

29

Yani disklerin boyunu aşağıya doğru orantılı bir şekilde artmaktadır. Her seferinde yalnız bir diskin hareketine izin verildiğinde, büyük diski küçüğünün üzerine yerleştirmeden ,disklerin C çubuğuna taşınması isteniyor.

Bu yaklaşıma dayalı kod aşağıdadır.

#include
#include
#include

void hanoi(int n,char x,char y, char z)
{
if(n==1)

printf(“Diski %c cubugundan %c cubuguna koy.\n\n”,x,z);
else
{
hanoi (n-1,x,z,y);
hanoi (1,x,y,z);
hanoi (n-1,y,x,z);

}
}

int main()
{
int n;

printf(“Disk sayisi N:”);
scanf(“%d”,&n);
hanoi(n,’A’,’B’,’C’);

return 0;
}

——————————————————————————————————————-

Ekran çıktısı:

30

Minimum geçiş sayısı=
31

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s