?? 漢諾塔.c
字號(hào):
這是個(gè)漢諾塔程序,在調(diào)試的時(shí)候,輸入的數(shù)字最好不要大于15,因?yàn)槊看笠粋€(gè)數(shù)
所得的結(jié)果的步驟都會(huì)多一倍。如果你有耐心等待結(jié)果的話除外。漢諾塔是在歐洲
流行的一種游戲,有a,b,c三個(gè)竿。a竿上有若干個(gè)由大到小的圓盤(pán),大的在下面,
小的在上面,b,c都是空桿,請(qǐng)你把a(bǔ)桿上的圓盤(pán)都倒到別的桿上,或b或c,在倒盤(pán)
的過(guò)程中不可以大的壓小的,實(shí)例程序如下:
#include <stdio.h>
int i=0;
main()
{
unsigned n;
printf("Please enter the number of discs: ");
scanf("%d",&n);
printf("\tneedle:\ta\t b\t c\n");
movedisc(n,'a','c','b');
printf("\t Total: %d\n",i);
getch();
}
movedisc(n,fromneedle,toneedle,usingneedle)
unsigned n;
char fromneedle,toneedle,usingneedle;
{
if(n>0)
{
movedisc(n-1,fromneedle,usingneedle,toneedle);
i++;
switch(fromneedle)
{
case 'a':switch(toneedle)
{
case 'b':printf("\t[%d]:\t%2d------>%2d\n",i,n,n);
break;
case 'c':printf("\t[%d]:\t%2d------------->%2d\n",i,n,n);
break;
}
break;
case 'b':switch(toneedle)
{
case 'a':printf("\t[%d]:\t%2d<----------%2d\n",i,n,n);
break;
case 'c':printf("\t[%d]:\t\t%2d------>%2d\n",i,n,n);
break;
}
break;
case 'c':switch(toneedle)
{
case 'a':printf("\t[%d]:\t%2d<--------------%2d\n",i,n,n);
break;
case 'b':printf("\t[%d]:\t\t%2d<--------%2d\n",i,n,n);
break;
}
break;
}
movedisc(n-1,usingneedle,toneedle,fromneedle);
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -