汉诺塔(Hanoi)

百度百科

汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
2020年8月3日,夏焱以33.039秒的成绩成功打破6层汉诺塔吉尼斯世界纪录。
2021年5月16日,中国龙岩的陈诺以29.328秒的成绩打破了6层汉诺塔吉尼斯世界纪录。

汉诺塔代码

复制代码
package t2022.t5.t25.hanoi;

/**
 * @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为圆盘的总数量)

运行结果

 

 

posted @   没有你哪有我  阅读(1047)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示