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片,僧人們一次只能移動乙個銅片,並且不論移到哪個針上,必須保持小片在大片上面。僧侶們預言,當所有的銅片都從穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消亡。當然,這只是個傳說,...