java算法1——河内之塔
河内之塔游戏规则:有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——河内之塔相关推荐
- java算法之———河内之塔
package demo; /** * 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时 * 北越的首都,即现在的胡志明市:18 ...
- 【C】C语言之经典算法:河内之塔(1)
文章目录 前言 一.背景 二.思路解析 三.流程图解析 四.代码附上 五.结果 六.参考链接 [C]C语言之经典算法:河内之塔(1) 前言 博主开通了C语言算法专栏,旨在对于有关C语言的一些经典算法的 ...
- JAVA经典算法之河内之塔
1 .河内之塔 说明 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于 1883 年从泰国带至法国的,河内为越战时 北越的首都,即现在的胡志明市: 1883 年法国数学 ...
- 算法之一 河内之塔
河内之塔介绍 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市:1883年法国数学家 Edouard ...
- 河内塔算法java_河内递归塔Java
这是我使用递归解决河内塔的Java代码: /**here is a stack of N disks on the first of three poles (call them A, B and C ...
- 河内之塔算法php,河内之塔(汉诺塔)
题目: 三个柱子刚互维曾屏以公式近开.护相蔽我司幻近开. A.B.C.在A柱子从上到下 按照从小到大的顺序放置64盘子,命令将所有的盘子从A柱子移至C柱子,并且搬运过程中小盘子不能放在大盘子上面,且 ...
- 20190925:(经典算法系列)河内之塔
河内之塔 题目 大致思路 代码实现 题目 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市:1883 ...
- java优秀算法河内之塔_河内塔的Java程序
java优秀算法河内之塔 Tower of Hanoi is a mathematical puzzle where we have three rods and n disks. The objec ...
- 河内之塔java_java优秀算法河内之塔_河内塔的Java程序
java优秀算法河内之塔 Tower of Hanoi is a mathematical puzzle where we have three rods and n disks. The objec ...
最新文章
- leetcode-20 有效的括号匹配
- matlab图像去毛刺_警微圈 图像处理第三讲CLAHE
- MediaPlayer播放音频,也可以播放视频
- CF GYM 100703G Game of numbers
- 海康威视第一季度营收165亿元 净利润22.84亿元
- ICSharpCode.SharpZipLib 压缩、解压文件 附源码
- 职场攻略:每天淘汰自己的不足
- matlab和气象,matlab在气象上的应用
- irr java_Java版的IRR(内部收益率)实现
- wxpython绘制雷达图_Tableau可视化分析【8】解锁雷达图
- old-style parameter declarations in prototyped function definition
- 语音识别(ASR)论文优选:端到端ASR综述Recent Advances in End-to-End Automatic Speech Recognition
- 多因子系列(二):基于机器学习选股策略(附源码)
- 使用EditPlus技巧
- 卷积神经网络(CNN):乳腺癌识别
- 【杂题】cf1041fF. Ray in the tube
- 软件测试工程师应该读的书
- RISC-V_GD32VF103-对 Debug 设置
- 数据分析系列--常见的评估方法
- Activiti6--入门学习--结束事件