===》点我返回目录《===
当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。如果这些子问题还较大,难以解决,可以再把它们分成几个更小的子问题,以此类推,直至可以直接求出解为止。这就是分治策略的基本思想。
基本的步骤为:分而治之,把一个复杂的问题分解成很多规模较小的子问题,然后解决这些子问题,把解决的子问题合并起来,大问题就解决了。
比如说二分查找,就是用的分治思想。要在一个有序的升序数组里面查找一个数x有没有,不用拿数组里面每个数挨个比较,这是暴力枚举。仔细考虑一下,我们可以把问题分成两部分,前半段有没有?后半段有没有?然后继续细分。
还有排列问题、归并排序、棋盘覆盖问题等等,都体现了分治思想。