-
#include
void move(int n,char x,char y);
void hanoi(int n,char one,char two,char three);
int main()
int n;
scanf("%d",&n);
hanoi(n,'a','b','c');
void hanoi(int n,char one,char two,char three)
if(n==1)
move(1,one,three);
elsehanoi(n-1,one,three,two);
move(n,one,three);
hanoi(n-1,two,one,three);
void move(int n,char x,char y)
printf("move disk %d from %c to %c",n,x,y);
就這樣,其他輸入的數量不能太大,最好在10個以內,如果超過64個,就收到了什麼,一時半會兒不玩了。
-
#include
#include
void move(char from,int n,char to);
void hanno(int n,char a,char b,char c);
int main(void)
hanno(10,'a','b','c');
printf("");
system("pause");
return 0;
void hanno(int n,char a,char b,char c)
if(n>0)
hanno(n-1,a,c,b);
move(a,n,c);
hanno(n-1,b,a,c);
void move(char from,int n,char to)
printf("編號為 %d 的板從 %c 塔移動到 %c 塔",n,from,to);
-
void hanoi (int n; char x, char y,char z)
塔基x上直徑從小到大、從上到下的N個直徑從1到N的N個圓盤按規則移動到塔基z處,Y可作為輔助塔座。 */1 }
-
事實上,與單層一樣,乙個
開始:A,你需要移動2n,然後移動2n-1到c,然後移動1到b,然後最大的兩個已經到位。
開始:C,需要移動2n-2,然後將2n-4移動到A,然後移動到B,然後接下來最大的兩個就位。
開始:A,你需要移動2n-4,然後移動2n-5到A,然後移動1到B,然後第三大兩個就位。
.以此類推,請參考了解河內單層塔的實現。
-
我不明白,我知道你在上大學,但你不想欺負我們這些沒受過教育的人,你應該問問你的老師。
-
#include
int main()
void hanoi(int n,char one,char two,char three) 定義 Hanoi 函式。
借助 seat two}void move(char x,char y) 將 n 個磁碟從塊 1 移動到塊 3 來定義移動函式。
-
如何解決河內塔問題可以用遞迴方法解決。 設要移動的板數為n,為了將n個板從A柱移動到C極,可以將盤1移動到n-1,以盤C為中介,從A極移動到B極。 將 A 欄中剩餘的第 N 個圓盤移動到 C 欄。
以A型桿為中介; 將光碟 1 移動到 N-1 從小節 B 移動到小節 C。 這樣,河內塔問題就解決了。