用Java语言解决的汉诺塔问题的代码
2012-10-05 19:56
591 查看
import java.util.Stack; public class HanoiTower { public static final int FLOORCOUNT = 3;// 当FLOORCOUNT等于26时,运行时间为7.7秒左右 // 等于27时,15.3秒,等于25时,为3.8秒 @SuppressWarnings("rawtypes") Stack[] tower = new Stack[3]; public HanoiTower() { } // public @SuppressWarnings("unchecked") public void initial() { for (int i = 0; i < 3; i++) { this.tower[i] = new Stack<Integer>(); } for (int i = HanoiTower.FLOORCOUNT; i > 0; i--) { this.tower[0].push(i); } } @SuppressWarnings("unchecked") public void moveXTowerTopsToZTower(int startTowerNumber, int movePlatesCount, int transitTowerNumber, int endTowerNumber) { if (movePlatesCount == 1) { System.out.println(startTowerNumber + "->" + endTowerNumber); this.tower[endTowerNumber].push(this.tower[startTowerNumber].pop()); } else { this.moveXTowerTopsToZTower(startTowerNumber, movePlatesCount - 1, endTowerNumber, transitTowerNumber); System.out.println(startTowerNumber + "->" + endTowerNumber); this.tower[endTowerNumber].push(this.tower[startTowerNumber].pop()); this.moveXTowerTopsToZTower(transitTowerNumber, movePlatesCount - 1, startTowerNumber, endTowerNumber); } } public void printTower(Stack<Integer> Tower) { System.out.println(); while (!Tower.empty()) System.out.println(Tower.pop()); } /** * @param args */ @SuppressWarnings("unchecked") public static void main(String[] args) { // TODO Auto-generated method stub HanoiTower ht = new HanoiTower(); ht.initial(); long startTime = System.currentTimeMillis(); ht.moveXTowerTopsToZTower(0, HanoiTower.FLOORCOUNT, 1, 2); long endTime = System.currentTimeMillis(); System.out.println("运行时间为:" + (endTime - startTime) + "ms"); ht.printTower(ht.tower[2]); } }
相关文章推荐
- 递归解决汉诺塔问题解法java代码
- Java使用递归法解决汉诺塔问题的代码示例
- 约瑟夫问题java语言实现代码
- 《Thinking in Java》RMI远程方法示例代码运行是可能遇到的问题及解决方法
- 从C/C++与Java的语言设计看代码质量问题
- java检测http请求的ip地址 Java问题通用解决代码
- java代码实现文件上传到linux服务器及问题汇总及解决
- Selenium Webdriver 的使用java执行js代码 解决 ScriptEngine不支持浏览器内置对象window,document的问题
- java语言基础(90)——多线程(同步代码块解决多线程售电影票时的负票问题)
- 原始的汉诺塔问题递归算法(java代码)
- 学习笔记---递归的代码,解决经典的汉诺塔问题
- 在代码层面上解决由于Java用有符号数值类型映射MySQL无符号数值类型而导致的数值溢出问题
- java语言基础(91)——多线程(同步方法解决线程安全问题)
- java代码的分层,解决一个文件有太多行的代码导致维护阅读困难的问题
- WIN7 64位系统下解决eclipse中java语言中中文字体很小的问题
- java清除所有微博短链接 Java问题通用解决代码
- 数据结构(java语言描述)递归实现——汉诺塔问题
- 解决eclipse中java代码注释变成乱码的问题
- java代码中实现字符编码转换(解决中文乱码问题)
- 漂亮的代码,糟糕的行为——解决Java运行时的内存问题