>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22073 个阅读者 刷新本主题
 * 贴子主题:  Java 入门实用代码:汉诺塔算法 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-01-22 00:08:32     消息  查看  搜索  好友  邮件  复制  引用

  
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

后来,这个传说就演变为汉诺塔游戏,玩法如下:    
  • 1.有三根杆子A,B,C。A杆上有若干碟子
  •    2.每次移动一块碟子,小的只能叠在大的上面
  • 3.把所有碟子从A杆全部移到C杆上
     以下实例演示了汉诺塔算法的实现:                      

MainClass.java 文件

public   class   MainClass   {
     public   static   void   main ( String [ ]   args )   {
         int   nDisks  =  3 ;
         doTowers ( nDisks ,  ' A ' ,  ' B ' ,  ' C ' ) ;
     }
     public   static   void   doTowers ( int   topN ,  char   from ,  char   inter ,  char   to )   {
         if   ( topN  ==  1 ) {
             System . out . println ( " Disk 1 from  "
            +  from  +  "  to  "  +  to ) ;
         } else   {
             doTowers ( topN  -  1 ,  from ,  to ,  inter ) ;
             System . out . println ( " Disk  "
            +  topN  +  "  from  "  +  from  +  "  to  "  +  to ) ;
             doTowers ( topN  -  1 ,  inter ,  from ,  to ) ;
         }
     }
}

以上代码运行输出结果为:

Disk 1 from A to C

Disk 2 from A to B

Disk 1 from C to B

Disk 3 from A to C

Disk 1 from B to A

Disk 2 from B to C

Disk 1 from A to C


程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-01-23 21:07:24 重新编辑]
  Java面向对象编程-->Java语言的基本语法和规范
  JavaWeb开发-->自定义JSP标签(Ⅱ)
  JSP与Hibernate开发-->映射组成关系
  Java网络编程-->RMI框架
  精通Spring-->计算属性和数据监听
  Vue3开发-->计算属性和数据监听
  解决javac编译错误: 编码UTF8/GBK的不可映射字符
  为网站代码块pre标签增加一个复制代码按钮代码
  JDK17的新特性
  NIO底层原理
  观察者模式和发布订阅模式的区别
  java.util.logging.Logger使用详解
  Java设计模式中的工厂模式和策略模式范例
  面试必考-static、final和单例模式
  邀请您一起来祝福和祈祷,祈愿疫情早日消除,平安吉祥
  Java设计模式:传输对象模式
  5个非常有挑战性的Java面试题
  Java入门实用代码:获取链表(LinkedList)的第一个和最后一...
  Java入门实用代码:字符串替换
  Java入门实用代码:删除一个文件目录
  java使用gzip实现文件解压缩示例
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。