分治算法

分治

分治法是建基于多项分支递归的一种算法范式,字面意思”分而治之“,把一个复杂的问题分为两个或者更多的相同或者相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。

分治算法通常以数学归纳法来验证。而它的计算成本则多数以解递归关系式来判定。

优势

解决困难问题

分治算法是一个解决复杂问题的好工具,它可以把问题分解成若干个子问题,把子问题逐个解决,再组合到一起形成大问题的答案。比如,汉诺塔问题如果采用分治算法,可以把高度为n的塔的问题转换成高度为n-1的塔来解决,如此重复,直至问题化简到可以很容易的处理为止。

实现

循环递归

在每一层递归上都有三个步骤:

  1. 分解:将原问题分解为若干个规模较小,相对独立,与原问题形式相同的子问题。
  2. 解决:若子问题规模较小且易于解决时,则直接解。否则,递归地解决各子问题。
  3. 合并:将各子问题的解合并为原问题的解。

241.给表达式加括号

不同的二叉搜索树

0%