日期:2014-05-17 浏览次数:21115 次
move 1 from A to C move 2 from A to B move 1 from C to B move 3 from A to C move 1 from B to A move 2 from B to C move 1 from A to C
move 1 from A to B move 2 from A to C move 1 from B to C move 3 from A to B move 1 from C to A move 2 from C to B move 1 from A to B move 4 from A to C move 1 from B to C move 2 from B to A move 1 from C to A move 3 from B to C move 1 from A to B move 2 from A to C move 1 from B to C
/**
* @param topNs 盘子总数
* @param from 盘子原来所在的柱子
* @param inter 辅助用的柱子
* @param to 盘子要移动到的柱子
*/
public static void move(int topNs, char from, char inter, char to) {
if (topNs == 1) {
System.out.printf("move %s from %s to %s\n", topNs, from, to);
} else {
move(topNs - 1, from, to, inter);
System.out.printf("move %s from %s to %s\n", topNs, from, to);
move(topNs - 1, inter, from, to);
}
}
------解决方案--------------------
以前一直不会解这个题目,后来老师给了一句口诀,然后就很简单的会了:
老和尚先叫小和尚把上面的N-1个盘子搬到C柱,然后老和尚再把最后的盘子搬到C柱
------解决方案--------------------
看过《猩球崛起》吗?里面人类用大猩猩做实验就有这道题目。
看来,程序员还是没能逃脱猿猴的命运啊......
------解决方案--------------------
汉诺塔问题啊,递归解决
------解决方案--------------------