package suanfa.dac;
/**
* 分治算法实现汉诺塔的程序
* @author Dell
*
*/
public class hannotower {
public static void main(String[] args) {
hannoTowerMove(4, 'A', 'B', 'C');
}
/**
* 分治算法的思路:将num-1个盘子先从A移到B 再将第num个盘子从A->C
* 最后将num-1个盘子从B移到C 如此的递归分治
* @param num 需要移动的盘子的数量
* @param A A号柱子
* @param B B号柱子
* @param C C号柱子
* 方法的意思是 将num个盘子从A通过B移动到C
*/
public static void hannoTowerMove(int num,char A,char B,char C) {
if(num==1) {
System.out.println("将"+num+"号盘子从"+A+"->"+C);
}else {
//将num-1个盘子从A->B 通过C
hannoTowerMove(num-1,A,C,B);
//将第num个盘子之间从A移动到C
System.out.println("将"+num+"号盘子从"+A+"->"+C);
//将剩下的num-1个盘子从B通过A移动到C
hannoTowerMove(num-1, B, A, C);
}
}
}
java采用分治算法实现汉诺塔的移动问题
最新推荐文章于 2023-09-13 16:40:16 发布