>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22116 个阅读者 刷新本主题
 * 贴子主题:  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面向对象编程-->数据类型
  JavaWeb开发-->使用过滤器
  JSP与Hibernate开发-->域对象在持久化层的四种状态
  Java网络编程-->基于UDP的数据报和套接字
  精通Spring-->Vue Router路由管理器
  Vue3开发-->组合(Composition)API
  java的三种随机数生成方式
  JDK17的新特性
  Java虚拟机安全性-class文件检验器
  快速理解 函数式编程,响应式编程,链式编程
  套接字通信:select、poll、epoll的区别
  BIO和NIO区别
  Java设计模式:接口隔离原则和迪米特法则详解
  整理收集的一些常用java工具类
  用注解去代替if-else的技巧
  Java注解的定义和使用
  Java多线程volatile详解
  Java入门实用代码:死锁及解决方法
  Java入门实用代码:格式化时间(SimpleDateFormat)
  Java程序初始化顺序(一看就懂)
  JDBC使用8.0驱动包连接mysql设置时区serverTimezone
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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