台哥演算法練習 漢諾塔問題

2021-05-05 18:14:47 字數 987 閱讀 6378

package suanfa;

/** * 漢諾塔問題

* * 2023年8月22日中午12點10分(週六)完成於紫金港某教室。

* @author 台哥程式設計課堂 https://blog.csdn.net/chaohi

* * 寫**的最高境界:多一行則胖,少一行則瘦。

* 如果要把10個盤子從a移到b,先要把上面的9個盤子從a移到c,然後把第十個盤子從a移到b,再接著把前9個盤子從c移到b。

由此可以看出,轉移n個盤子所需的次數 = 轉移n-1個盤子的次數 * 2 + 1 。

就跟那個西洋棋上放大 公尺的故事一樣。如果盤子數很大,那移動次數是驚人的。

將10個盤子從a柱移動到b柱,一共要移動1023次.

將15個盤子從a柱移動到b柱,一共要移動32767次.

看看這增長速度,可想而知,要移動100個盤子,那移動的次數該有多麼恐怖了。

* */

public class hannuota else

} /** 得到中轉的柱子 */

public string getz(string x, string y)

if (!"b柱".equals(x) && !"b柱".equals(y))

return "a柱";

} /** 主方法,程式入口 */

public static void main(string args)

}

漢諾塔演算法

最簡步驟 2的n次冪 1 為了實現 n個盤從 借助c 從a 移動到 b 思路如下 首先考慮極限當只有乙個盤的時候 只要 盤直接從 a b即可 那麼當有2個盤的時候就只要先把1號盤從a c 然後 把2號盤 a b 再 把 2好盤從 c b 那麼當有n個盤的時候你只要先把 n 1個 盤 借助 b 移動到...

漢諾塔演算法

解法 如果柱子標為abc,要由a搬至c,在只有乙個盤子時,就將它直接搬至c,當有兩個盤子,就將b當作輔助柱。如果 盤數超過兩個,將第三個以下的盤子遮起來,就很簡單了,每次處理兩個盤子,也就是 a b,a c,b c這三個 步驟,而被遮住的部分,其實就是進入程式的遞迴處理。事實上,若有n個盤子,則先移...

漢諾塔演算法

乙個印度傳說 在乙個神廟裡有有乙個漢諾塔,就是乙個銅板上插著3個寶石針,其中一根針從上到下的穿著由小到大的銅片64片,僧人們一次只能移動乙個銅片,並且不論移到哪個針上,必須保持小片在大片上面。僧侶們預言,當所有的銅片都從穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消亡。當然,這只是個傳說,...