河内之塔游戏规则:有A、B、C三个石棒,A上有若干个从小到大依次排列的盘子,盘子的数量为n,现在要求,将A棒上的盘子依次移动到C棒上,并且移动过程中要保证小盘在大盘之上。
  (1)当n=1时:将盘子直接从A移动到C;( 注:图片来源于https://www.cnblogs.com/li-peng/p/3303349.html,图片有修改,原作者使用的是c和c++,感兴趣的读者可以去看一下)

图一

  (2)当n=2时:将小盘子1从A移动到B;
          将大盘子2从A移动到C;
          将小盘子1从B移动到C;

图二

  (3)当n=3时:将盘子1从A移动到C;
          将盘子2从A移动到B;
          将盘子1从C移动到B;
          将盘子3从A移动到C;
          将盘子1从B移动到A;
          将盘子2从B移动到C;
          将盘子1从A移动到C;

图三    解题思路:当n=3时:(1)将1和2盘子看成一个盘子,利用图二就可完成盘子从A移动到C的移动操作;

           (2)A移动到C的过程中,先是把盘子1和2是看成一个盘子移动到B棒上的。那么就来看看这一部分怎么移动到B盘上的,将A和B棒位置互换,并且将A,B棒位置以及名字互换,再将更换后的B棒和C棒位置互换,那么通过图五,A棒便可以完成盘子1和2移动到B棒上。(递归思想)

图四 第(1)步移动

图五

  当n=n(多余三个的)时候,重复的将盘子分为最下边一个盘子分为第一部分,将剩下的所有上边的盘子分成第二部分,多次重复图二操作,便可以完成盘子从A移动到C的操作;

  代码和打印结果如下:

import java.util.Scanner;public class Towers_of_Hanoi {public static void main(String[] args) {int n;Scanner scanner = new Scanner(System.in);System.out.println("请输入盘数:");if (scanner.hasNextInt()) {n = scanner.nextInt();data(n,"A","B","C");}else {System.out.println("请输入正确数字");}}public static void data(int n,String A,String B,String C) {if(n==1) {System.out.println(A+">>"+C);}else {data(n-1,A,C,B);//第一步,将A上方所有的盘子,从A移动到BSystem.out.println(A+">>"+C);//第二步将A最后一个盘子,从A移动到Cdata(n-1,B,A,C);//第三步将B所有盘子,从B移动到C}}
}

打印结果1:

打印结果2:

java算法1——河内之塔相关推荐

  1. java算法之———河内之塔

    package demo; /** * 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时 * 北越的首都,即现在的胡志明市:18 ...

  2. 【C】C语言之经典算法:河内之塔(1)

    文章目录 前言 一.背景 二.思路解析 三.流程图解析 四.代码附上 五.结果 六.参考链接 [C]C语言之经典算法:河内之塔(1) 前言 博主开通了C语言算法专栏,旨在对于有关C语言的一些经典算法的 ...

  3. JAVA经典算法之河内之塔

    1 .河内之塔 说明 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于 1883 年从泰国带至法国的,河内为越战时 北越的首都,即现在的胡志明市: 1883 年法国数学 ...

  4. 算法之一 河内之塔

    河内之塔介绍 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市:1883年法国数学家 Edouard ...

  5. 河内塔算法java_河内递归塔Java

    这是我使用递归解决河内塔的Java代码: /**here is a stack of N disks on the first of three poles (call them A, B and C ...

  6. 河内之塔算法php,河内之塔(汉诺塔)

    题目: 三个柱子刚互维曾屏以公式近开.护相蔽我司幻近开. A.B.C.在A柱子从上到下 按照从小到大的顺序放置64盘子,命令将所有的盘子从A柱子移至C柱子,并且搬运过程中小盘子不能放在大盘子上面,且 ...

  7. 20190925:(经典算法系列)河内之塔

    河内之塔 题目 大致思路 代码实现 题目 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市:1883 ...

  8. java优秀算法河内之塔_河内塔的Java程序

    java优秀算法河内之塔 Tower of Hanoi is a mathematical puzzle where we have three rods and n disks. The objec ...

  9. 河内之塔java_java优秀算法河内之塔_河内塔的Java程序

    java优秀算法河内之塔 Tower of Hanoi is a mathematical puzzle where we have three rods and n disks. The objec ...

最新文章

  1. leetcode-20 有效的括号匹配
  2. matlab图像去毛刺_警微圈 图像处理第三讲CLAHE
  3. MediaPlayer播放音频,也可以播放视频
  4. CF GYM 100703G Game of numbers
  5. 海康威视第一季度营收165亿元 净利润22.84亿元
  6. ICSharpCode.SharpZipLib 压缩、解压文件 附源码
  7. 职场攻略:每天淘汰自己的不足
  8. matlab和气象,matlab在气象上的应用
  9. irr java_Java版的IRR(内部收益率)实现
  10. wxpython绘制雷达图_Tableau可视化分析【8】解锁雷达图
  11. old-style parameter declarations in prototyped function definition
  12. 语音识别(ASR)论文优选:端到端ASR综述Recent Advances in End-to-End Automatic Speech Recognition
  13. 多因子系列(二):基于机器学习选股策略(附源码)
  14. 使用EditPlus技巧
  15. 卷积神经网络(CNN):乳腺癌识别
  16. 【杂题】cf1041fF. Ray in the tube
  17. 软件测试工程师应该读的书
  18. RISC-V_GD32VF103-对 Debug 设置
  19. 数据分析系列--常见的评估方法
  20. Activiti6--入门学习--结束事件

热门文章

  1. 大数据Hive集成python分析框架—搜狗实验室(用户查询日志)—电影评分分析
  2. CSS常用水平垂直居中的几种方法
  3. C语言白话数组数据查找(遍历查找、二分查找)
  4. Elasticsearch搜索引擎第十篇-Query DSL详解
  5. CSS----字体属性
  6. 智能家居app开发十大核心功能
  7. [转]Jexus的常用操作和基本配置
  8. asp.net + mono + Jexus 部署 linux
  9. 钉钉直播回放下载解决方案
  10. uni-app ,uni is not defind uView安装不了