
目录
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,移动过程使用到c
ht(number - 1, a, c, b);
//2.最下面的盘A->C
System.out.println("第" + number + "个盘从" + a + "->" + c);
//3.把B塔所有盘B->C,移动过程用到a
ht(number - 1, b, a, c);
}
}
}
10万+

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



