栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

汉诺塔问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

汉诺塔问题

汉诺塔问题解决方法

该问题就是把除了最下面一层的盘子,上面的n-1个盘子当成一个整体
这样一来问题就转化为有两个盘子,三个柱子的问题,

  • 第一步就是把上面的盘子放到中转的盘子上面
  • 第二步把最后一个盘子放到目标柱子上
  • 第三步,把中转柱子上面的盘子全部转移到目标柱子上
package jianzhioffer;
import java.util.Arrays;
public class hannoi {
    public static void main(String[] args)
    {
        HanNuo(10, 'a', 'b', 'c');

        System.out.println();
    }
    //汉诺塔问题解决方法
    // 该问题就是把除了最下面一层的盘子,上面的n-1个盘子当成一个整体
   // 这样一来问题就转化为有两个盘子,三个柱子的问题,
    // 第一步就是把上面的盘子放到中转的盘子上面
  // 第二步把最后一个盘子放到目标柱子上
  //  第三步,把中转柱子上面的盘子全部转移到目标柱子上
    //汉诺塔的层数,最初的柱子,中转柱子,目标柱子
    static void HanNuo(int n, char a, char b, char c)
    {
        if (n == 1)   //是递归的终止条件
        {
            System.out.println("将盘子"+n+"从"+a+" ----->"+ c); //控制台输出每次操作盘子的动向
        }
        else
        {
            HanNuo(n - 1, a, c, b);      //将a柱子上的从上到下n-1个盘移到b柱子上
            System.out.println("将盘子"+ n+"从 "+a+ "-----> "+c);
            HanNuo(n - 1, b, a, c);      //将b柱子上的n-1个盘子移到c柱子上
        }
    }



}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/272377.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号