天天看點

漢諾塔問題 一、問題 二、問題分析 三、解法方案 四、解法方案 五、源代碼 六、程式運作效果

漢諾塔問題

      古代有一個梵塔,塔内有3個座分别為A,B,C,開始時A座上有64個盤子,盤子大小不等,大的在下面,小的在上面(如下圖所示)。有一個老和尚想把這64個盤子,從A盤移動到C槽,但每次隻允許移動一個盤子,且在移動過程中在3個座上都需要始終保持大盤在下面,小盤在下。在移動過程中可以利用B座,要求程式設計實作,列印出移動方案。

漢諾塔問題 一、問題 二、問題分析 三、解法方案 四、解法方案 五、源代碼 六、程式運作效果

将所有的盤子從A盤移動到C槽

A.每次隻允許移動一個盤子;

B.在移動過程中,在3個座上都需要始終保持大盤在下面,小盤在下;

C.在移動過程中可以利用B座;

列印出移動方案

(1)将A座上n-1個盤子借助C座,先移動到B座上;

(2)把A座上所剩下的最後一個盤子移動到C座;

(3)将n-1個盤子從B座借助于A座,再移動到C座; 

1.目前隻考慮列印移動3個盤子的移動方案;

因為64個盤子,移動的步驟有264-1,該數目相當相當大;

2.盤子的編号是從上到下,進行編号,分别是1,2,3等;

漢諾塔問題 一、問題 二、問題分析 三、解法方案 四、解法方案 五、源代碼 六、程式運作效果