回溯算法解决汉诺塔问题
//分治回溯算法解决汉诺塔问题
/*
要将第n个盘子从begin经过mid移到end
就要将前n-1个盘子从begin经过eng移到mid
再将第n个盘子从从begin经过mid移到end
其次将前n-1个盘子从mid经过begin移到end
*/
public class Hanoi {
public static void main(String[] args) {
//x y z分别表示三个柱子
String x = "X";
String y = "Y";
String z = "Z";
hanoi(3, x, y, z); //移动盘子的方法
}
//移动盘子的方法
//n表示盘子个数 begin表示盘子移动的开始柱子 end表示盘子移动的目标柱子 mid表示盘子从开始位置移动到目标位置需要借助的柱子
private static void hanoi(int n, String begin, String mid, String end) {
if(n == 1){ //判断递归临界条件 当盘子数为1时 直接输出从开始位置到目标位置的柱子编号即可
System.out.println(begin + "->" + end);
}else{
//先将n-1个盘子从开始柱子 移动到借助柱子
hanoi(n - 1, begin, end, mid);
//再输出第n个盘子的移动方向 从开始柱子移动到目标柱子
System.out.println(begin + "->" + end);
//最后将n-1个盘子从中间柱子 移动到目标柱子
hanoi(n - 1, mid, begin, end);
}
}
}
相关推荐
用MFC写的汉诺塔演示图程序
用C++MFC写的一个汉诺塔的演示程序,可以支持更改数量的
移动3根柱子的汉诺塔问题算法
汉诺塔问题算法,移动3根柱子的汉诺塔问题算法源码,。说明:这是3根柱子的汉诺塔问题算法!如果是4根柱子的话算法又不一样了。请在输入框内输入2~64之间的盘子数,太大了可能很慢呀!。@易语言学习网。
汉诺塔问题的递归算法,很简单哦
有3个针ABC,A上有n个盘子,大小不等,大的再下边,小的再上边,要把这n个盘子从A上移动到C。
汉诺塔演示程序(MFC)
汉诺塔演示程序,开发环境VS2015,用MFC实现,可演示盘子的移动,也可单步查看盘子的移动。程序仅演示盘子个数为2-7,太大也没意义。可根据需求修改。
算法分治 汉诺塔、棋盘覆盖 JAVA图形演示
有详细注释哈、、没资源分了,就随便传了一个,拜托了。。


