>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 30697 个阅读者 刷新本主题
 * 贴子主题:  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面向对象编程-->Swing组件(上)
  JavaWeb开发-->JSP技术详解(Ⅱ)
  JSP与Hibernate开发-->Spring、JPA与Hibernate的整合
  Java网络编程-->基于MVC和RMI的分布式应用
  精通Spring-->组合(Composition)API
  Vue3开发-->通过Vuex进行状态管理
  java实现动态编译并动态加载
  用VisualVM远程监控Java进程
  JDK自带JVM调优工具的用法
  靠一个HashMap的讲解打动了头条面试官
  Java并发之volatile关键字内存可见性问题
  分布式锁的原理和实现
  java中的Static、final、Static final各种用法
  Java设计模式:抽象工厂模式
  Java读取大文件的高效率实现_java大文件
  使用javaNIO实现C/S模式的通信
  正则表达式范例
  redis持久化问题处理
  正则表达式性能调优
  Java 入门实用代码: 数组差集
  Java程序初始化顺序(一看就懂)
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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