Java数据结构和算法——汉诺塔问题



package com.tiantian.algorithms;
/* _|1 | |
|2 | | __
|_3 | | (1).把A上的4个木块移动到C上。
* __
|_4 | |
A B C
| | | |
|_1 |
* |
|2 | 要完成(1)的效果,必须要把1、2、3木块移动到B,这样才能把4移动到C
* __
|_4 |3 | 如:代码中的“调用(XX)”
A B C
| | | |
|_1 |
* |
|2 | 此时,题目就变成了把B上的3个木块移动到C上,回到了题目(1)
* | _
|_3 __|____4 如:代码中的“调用(YY)”
A B C
然后循环这个过程
@author wangjie @version 创建时间:2013-3-4 下午4:09:53
*/
public class HanoiTowerTest {
public static void main(String[] args) {
doTowers(
4, ‘A’, ‘B’, ‘C’);
}

public static void doTowers(int topN, char from, char inter, char to){
if(topN == 1){
System.out.println(
“最后把木块1从” + from + “移动到” + to);
}
else{
doTowers(topN
- 1, from, to, inter); // 调用(XX)
System.out.println(“把木块” + topN + “从” + from + “移动到” + to);
doTowers(topN
- 1, inter, from ,to); // 调用(YY)
}

}
}

 



来源博客:Wang Jie's Blog's Blog
本文链接:https://blog.wangjiegulu.com/2013/03/04/Java数据结构和算法——汉诺塔问题/
版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处。