這是壹個漢諾塔程序。調試時,最好不要輸入大於15的數,因為每壹個大數。
結果將是兩倍的步驟。除非妳有耐心等待結果。河內塔在歐洲。
壹款流行的遊戲,有A、B、c、B、c三個桿子,A桿子上有幾個從大到小的圓盤,大的在下面。
小的在上面,B和C都是空桿。請將A桿上的所有碟片倒在其他桿上,或者B或C上,然後再倒。
在這個過程中,不能把大的壓在小的上面。示例程序如下:
# include & ltstdio.h & gt
int I = 0;
主()
{
無符號n;
printf("請輸入盤數:");
scanf("%d ",& ampn);
printf(" \ tneedle:\ ta \ t b \ t c \ n ");
movedisc(n,' a ',' c ',' b ');
printf("\t總計:%d\n ",I);
getch();
}
移動光盤(n,從唱針,唱針,使用唱針)
無符號n;
用針充電;
{
如果(n & gt0)
{
movedisc(n-1,fromneedle,usingneedle,toneedle);
i++;
開關(從針)
{
案例“a”:開關(音調開關)
{
事例“b”:printf(" \ t[% d]:\ t % 2d-& gt;%2d\n ",I,n,n);
打破;
case ' c ':printf(" \ t[% d]:\ t % 2d-& gt;%2d\n ",I,n,n);
打破;
}
打破;
情況“b”:開關(音調開關)
{
事例“a”:printf(" \ t[% d]:\ t % 2d & lt;- %2d\n ",I,n,n);
打破;
case ' c ':printf(" \ t[% d]:\ t \ t % 2d-& gt;%2d\n ",I,n,n);
打破;
}
打破;
案例“c”:開關(音調開關)
{
事例“a”:printf(" \ t[% d]:\ t % 2d & lt;- %2d\n ",I,n,n);
打破;
事例“b”:printf(" \ t[% d]:\ t \ t % 2d & lt;- %2d\n ",I,n,n);
打破;
}
打破;
}
movedisc(n-1,使用needle,toneedle,from needle);
}
}