本文共 746 字,大约阅读时间需要 2 分钟。
分治法是一种很重要的算法。字面上的解释是“分而治之”.就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题,直到最后子问题可以简单的直按求解,原问题的解即子问题的解的合井。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并撞序),傅立叶变换(快速傅立叶变换)。
使用分治算法可以解决排序当中的归并排序:
➢ 汉诺塔游戏的演示和思路分析: .
代码实现:
package DivideConquer;public class Hanoitower { public static void main(String[] args) { move(5, 'A', 'B', 'C'); } // 移动方法 public static void move(int num, char a, char b, char c) { // 如果只有一个 if (num == 1) { System.out.println("第 1个盘,从 "+ a + " -> " + c); } else { //把最上面的所有盘移动到b move(num - 1, a, c, b); //把最下面的盘移到c System.out.println("第 " + num + "个盘,从 " + a + " -> " + c); //把b上剩余的移到c move(num - 1, b, a, c); } }}
进行测试:
转载地址:http://mgmzi.baihongyu.com/