首页 > 其他 > 详细

汉诺塔问题

时间:2019-04-21 19:03:32      阅读:133      评论:0      收藏:0      [点我收藏+]

 

思路:

当有多个盘子时,永远将盘子看作只有两个,位于最下面的一个盘子(A),跟其他的所有盘子(看做一个B),那么只需要先将B先放到中间位置,在将A放到目标位置,最后将A放到目标位置即可。当仅仅只有一个盘子时,直接将盘子从原始位置移动到目标位置。

package DataStruct.Alg;

public class Hanio {
    public static void Hanota(int n,char from,char in,char to)
    {
        //当仅有一个盘子时
       if (n==1)
       {
           System.out.println("第"+n+"个盘子"+"从"+from+"柱子移动到"+to+"柱子");
       }
       //当有多个盘子时,将其看作只有两个盘子,最下面一个,最上面一个
       else {
           //将最上面一个盘子移动到中间in位置
           Hanota(n-1,from,to,in);
           //将最下面的一个盘子移动到to位置
           System.out.println("第"+n+"个盘子"+"从"+from+"柱子移动到"+to+"柱子");
           //将最上面的一个盘子移动到to位置
           Hanota(n-1,in,from,to);
       }
    }

    public static void main(String[] args)
    {
        Hanota(3,‘A‘,‘B‘,‘C‘);
    }
}

 技术分享图片

 

汉诺塔问题

原文:https://www.cnblogs.com/dloading/p/10745925.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!