分而治之

  • 问题的规模越小,越容易解决
  • 把复杂问题不断分成多个相同或相似的子问题,直到每个子问题可以简单地进行求解
  • 将所有子问题的解合并起来,就是原问题的解

分治和递归

  • 产生的子问题形式往往和原问题相同,只是原问题的较小规模表达
  • 使用递归手段求解子问题,可以很容易地将子问题的解合并,得到原问题的解

基本步骤

  • step1:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题
  • step2:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题
  • step3:将各个子问题的解合并为原问题的解

应用场景

  • 二分搜索、大整数乘法、归并排序、快速排序
  • 棋盘覆盖问题、循环赛日程表问题、汉诺塔问题等