對于游戲的玩法,我們可以簡單分解為三個步驟
1)將前63個盤子從X移動到Y上;
2)將最底下的第64個盤子從X移動到Z上;
3)將Y的63個盤子移動到Z上;
第二步是最容易實作的一步,那么第一步和第三步如何實作?
問題一(“將X上的63個盤子借助Z移到Y上")拆解為:
—將前62個盤子從X移動到Z上;
—將最底下的第63個盤子移動到Y上;
—將Z上的62個盤子移動到Y上;
問題二(“將Y上的63個借助X移到Z上")拆解為:
—將前62個盤子從Y移動到X上;
—將最底下的第63個盤子移動到Z上;
—將X上的62個盤子移動到Y上;
那么我們如何用代碼實作呢?
#include<stdio.h>
int main()
{
int h;
printf("\ninput number:\n");
scanf("%d",&h);
printf("tower disks %d\n",h);
hanoi(h, 'A', 'B', 'C');
}
void hanoi(int n, int x, int y, int z)
{
if(n==1)
printf("%c-->%c\n", x, z);
else
{
hanoi(n-1, x, z , y);
printf("%c-->%c\n", x, z);
hanoi(n-1,y,x,z);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/400378.html
標籤:其他
