分治算法
一、介绍




- 思路分析

二、代码实现
package com.achang.algorithm;
/**
* 分治算法
*/
public class DivideAndConquer {
public static void main(String[] args) {
hanoiTower(3,'a','b','c');
}
/**
* 汉诺塔移动方法
* 使用分治算法
* @param num 盘的数量
* @param a 塔A
* @param b 塔B
* @param c 塔C
*/
public static void hanoiTower(int num,char a,char b,char c){
//如果只有一个盘
if (num == 1){
System.out.println("第1个盘从 "+a+"->"+c);
}else {
//如果n>=2,总是将它看成两个盘,1、最上面的盘 2最下面的盘
//先吧最上面的所有盘盘 A->B,移动过程会使用到c
hanoiTower(num - 1,a,c,b);
System.out.println("第"+ num + "个盘从 " + a + "->"+c);
//把B塔的所有盘移动到C塔
hanoiTower(num - 1,b,a,c);
}
}
}

本文介绍了分治算法的基本思路,并通过实例演示了如何用Java实现经典的汉诺塔问题,展示了分治算法在实际问题中的应用。
204

被折叠的 条评论
为什么被折叠?



