1. 程式人生 > 其它 >漢諾塔(Hanoi)

漢諾塔(Hanoi)

百度百科

漢諾塔(Tower of Hanoi),又稱河內塔,是一個源於印度古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。 2020年8月3日,夏焱以33.039秒的成績成功打破6層漢諾塔吉尼斯世界紀錄。
2021年5月16日,中國龍巖的陳諾以29.328秒的成績打破了6層漢諾塔吉尼斯世界紀錄。

漢諾塔程式碼

package t2022.t5.t25.hanoi;

import java.util.TreeSet;

/** * @Author 14715 * @Date 2022/5/25 20:41 * @Version 1.0 * * 漢諾塔 */ public class Main { private static int cnt; public static void main(String[] args) { hanni('A', 'B', 'C', 10); System.out.println(cnt); } /** * 將在A環上的n個物塊藉助B環從A環移動到C環 * @param A * @param
B * @param C * @param n */ public static void hanni(char A, char B, char C, int n) { if (n <= 0) { return; } // 首先將A環上的前n - 1個物塊藉助C環從A環移動到B環 hanni(A, C, B, n - 1); // 然後直接將A環上的最後一個直接從A環移動到C環 System.out.println(A + "環上第" + n + "個物塊從" + A + "環直接移動到" + C + "環"); cnt
++; // 最後將在B環上的n - 1個物塊藉助A環從B環移動到C環 hanni(B, A, C, n - 1); } }

移動次數計算

2^n - 1(n為物塊的總數量)

執行結果