学习笔记
学习书目:《算法图解》- Aditya Bhargava
分而治之
在这里,我想通过2个例子介绍一种著名的递归式问题解决方法–分而治之(D&C)
- 分蛋糕
假如,我要分一块1680mm*640mm的长方形巨形蛋糕,我要将这块蛋糕均匀的分成同等大小的正方形,且分出的正方形要尽量大。
现在,我们将使用D&C的思路解决问题,D&C过程包括两个步骤。
(1) 找出基线条件(函数不再调用自己的条件),这种条件必须尽可能简单.
(2) 不断将问题分解(或者说缩小规模),直到符合基线条件.
首先,我们要找出基线条件。一般来说,我们将基线条件定为较为简单的情况,那么现在最容易处理的情况是,长方形一条边的长度是另一条边的整数倍。比如下面的1000mm*500mm
的长方形,长就是高的两倍: