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