>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 29454 个阅读者 刷新本主题
 * 贴子主题:  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面向对象编程-->Lambda表达式
  JavaWeb开发-->多线程(下)
  JSP与Hibernate开发-->JavaWeb应用入门(Ⅱ)
  Java网络编程-->Web运作原理(Ⅳ)
  精通Spring-->Java应用分层架构及软件模型
  Vue3开发-->第一个helloapp应用
  ThreadLocal的内存泄露的原因分析以及如何避免
  [讨论]书中多线程章节的语言表述有误?
  Java 冒泡排序算法
  Java关键字final、static使用总结
  java常见的几种调用机制:同步调用,异步调用,回调
  深入分析synchronized实现原理
  Java入门实用代码:100以内整数求和运算
  Java入门实用代码:自定义异常
  Java入门实用代码: 字符串格式化
  Java入门实用代码:字符串优化测试
  JAVA设计模式之备忘录模式原理与用法详解
  Java入门实用代码:删除一个文件目录
  java实现PPT转化为PDF
  java使用gzip实现文件解压缩示例
  Java中用动态代理实现标准的DataSource数据源连接池
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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