2021-10-25 16:39:57 +08:00
|
|
|
# 分治算法
|
2017-04-01 17:50:44 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
将一个难以直接解决的大问题,分割成一些规模较小的相同问题,各个击破,分而治之。
|
|
|
|
|
|
2021-11-10 16:35:20 +08:00
|
|
|
分治算法常用[递归](./递归.md) 实现
|
2017-04-01 17:50:44 +08:00
|
|
|
|
2021-11-07 00:16:03 +08:00
|
|
|
1)问题缩小的小规模可以很容易解决
|
|
|
|
|
2)问题可以分解为规模较小相同问题
|
|
|
|
|
3)子问题的解可以合并为该问题的解
|
|
|
|
|
4)各个子问题相互独立,(如果这条不满足,转为`动态规划`求解)
|
2017-04-01 17:50:44 +08:00
|
|
|
|
|
|
|
|
分治法的步骤:
|
2021-11-07 00:16:03 +08:00
|
|
|
|
2017-04-01 17:50:44 +08:00
|
|
|
1. 分解
|
|
|
|
|
2. 解决
|
|
|
|
|
3. 合并
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 大整数乘法
|
|
|
|
|
|
2021-10-11 10:35:23 +08:00
|
|
|
如 `26542123532213598*345987342245553677884`
|
2017-04-01 17:50:44 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 其它案例
|
|
|
|
|
|
2021-11-07 00:16:03 +08:00
|
|
|
* 快速排序
|
|
|
|
|
* [归并排序](../6%20Sort/README.md)
|
|
|
|
|
* 最大子数组和
|