Loading

算法图解学习笔记03:分而治之

 分而治之概念

  所谓“分而治之” 就是把一个复杂的算法问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的解,把各部分的解组成整个问题的解。

  步骤如下:

  1. 分解(Divide):将问题分解为同一类型的子问题;
  2. 治理(Conquer):递归地解决子问题;
  3. 合并(Combine):合并子问题的答案,得出原问题的答案。

分而治之案例

  本案例是算法图解上的一个案例。现在你要分割一块土地,从中找出最大的正方形,找出的正方形可以全部分割该块土地

  下方是错误的分割方法

  所以现在就需要用分治方法递归的处理该问题(为什么?因为分治方法本身就是递归的),而递归首先就要确定基线!最容易处理的情况是,一条边的长度是另一条边的整数倍。

 

 

   所以,现在的问题就剩下如何将问题分解

 

 

  具体编程的案例可见下篇博文——求最大公共子序列

 

posted @ 2018-08-02 11:20  xpang0  阅读(778)  评论(0编辑  收藏  举报