分而治之
- 问题的规模越小,越容易解决
- 把复杂问题不断分成多个相同或相似的子问题,直到每个子问题可以简单地进行求解
- 将所有子问题的解合并起来,就是原问题的解
分治和递归
- 产生的子问题形式往往和原问题相同,只是原问题的较小规模表达
- 使用递归手段求解子问题,可以很容易地将子问题的解合并,得到原问题的解
基本步骤
- step1:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题
- step2:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题
- step3:将各个子问题的解合并为原问题的解
应用场景
- 二分搜索、大整数乘法、归并排序、快速排序
- 棋盘覆盖问题、循环赛日程表问题、汉诺塔问题等