用JAVA编写汉诺塔程序
来源:互联网 发布:网络语吃狗粮 编辑:程序博客网 时间:2024/06/07 09:40
汉诺塔问题:三根坚柱和一组中间有洞能在柱子上滑动的盘子,每个盘子有不同的直径。初始时,所有的盘子按照大小依次堆放在一个柱子上,最大的盘子在最下面。
目标:将所有的盘子从初始的第一根柱子移动到第三根柱子上,可以借用额外的第二根柱子作为临时存放盘子的地方,但是移动过程中必须遵守以下规则:
1.一次只能移动一个盘子
2.不能把大盘子压在小盘子上面
3.除去移动的瞬间,所有盘子必须在柱子上。
思想:递归。要将N个盘子移到目标柱子上:
(1)将N-1个盘子移动到额外的柱子上
(2)将最大的盘子移到目标柱子上
(3)将N-1个盘子从额外的柱子上移到目标柱子上
- package http;
- public class Tower {
- private int totalDisks;
- public Tower(int totalDisks){
- this.totalDisks=totalDisks;
- }
- public void solve(){
- moveTower(totalDisks,1,3,2);
- }
- private void moveTower(int numDisks,int start,int end,int temp){
- if (numDisks==1)
- moveOneDisk(start,end);
- else{
- moveTower(numDisks-1, start, temp, end);
- moveOneDisk(start,end);
- moveTower(numDisks-1,temp,end,start);
- }
- }
- private void moveOneDisk(int start,int end){
- System.out.println("将一个盘子从"+start+"移动到"+end);
- }
- }
- import http.Tower;
- public class SolveTower {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Tower towers=new Tower(4);
- towers.solve();
- }
- }
1 0
- 用JAVA编写汉诺塔程序
- 用uml编写java程序
- 用JCreator编写java程序
- 用Java程序编写记事本
- 用 java 编写 windows 程序
- 【JAVA】2.用记事本编写JAVA程序
- 用java编写xml的读写程序
- 用java编写xml的读写程序
- 用Java编写Socket客户机端程序
- 用Java编写HTML文件分析程序
- 用Java编写的五子棋小程序
- 用java编写程序输出下列结果
- 用java编写生产者消费者程序
- 用Java程序编写兔子繁殖题目
- 用Eclipse编写运行Java程序
- 用myeclipse如何编写java程序
- 用java编写的时钟程序
- 用Java语言编写一个金字塔程序
- 3172: [Tjoi2013]单词 fail树
- Property动画实例1
- ibm watson 论文
- 天声人語 20160110 ウルトラマン50年
- java中的==运算符、equals()方法
- 用JAVA编写汉诺塔程序
- adobe CC 2015 mac 版本全套破解方法(可在线更新或者离线更新)
- 网站无法登陆
- (2-3)DateNode+小结HDFS
- 傅立叶级数动图
- NSURLSession的强引用问题
- 实践干货!猿题库 iOS 客户端架构设计
- <Android Studio实用指南>8.16 提炼参数对象
- 简单密码解码