目录
🥓1.简单介绍
🧈2.汉诺塔问题
1.简单介绍
分治算法是解决问题的一种思想,它将一个大问题分解成若干个小问题,然后分别解决这些小问题,最后将小问题的解合并起来得到原问题的解。
分解:将原问题分解成若干个小问题。
解决:递归地解决每个小问题。当小问题足够小,可以直接解决时,就称为基本情况。
合并:将每个小问题的解合并起来,得到原问题的解。
2.汉诺塔问题
思路分析
- 1.如果是有一个盘。A-C
- 2.如果我们有n>=2情况,我们总是可以看作是两个盘,1.最下面的。2.上面的全部
/*** 分治算法*/
public class DivideAndConquer {public static void main(String[] args) {ht(5,'A','B','C');}public static void ht(int number, char a, char b, char c) {//如果只有一个盘if (number == 1) {System.out.println("第1个盘从" + a + "->" + c);} else {//如果number>=2,我们总是可以看作两个盘,最下面一个,和上面所有//1.先把最上面的所有盘A->B,移动过程使用到cht(number - 1, a, c, b);//2.最下面的盘A->CSystem.out.println("第" + number + "个盘从" + a + "->" + c);//3.把B塔所有盘B->C,移动过程用到aht(number - 1, b, a, c);}}
}