面试复习-------算法与数据结构------算法设计

海量数据处理面试题:http://blog.csdn.net/v_july_v/article/details/6279498/


分治法

分治法的基本思想是将一个规模为n的问题分解为k个规模较小的问题,这些子问题互相独立且与原问题相同(所以可以递归)。递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。

分治一般有两步:①问题分解,递归求解②子问题解的合并

典型例子:归并排序

动态规划

动态规划也需要将问题进行分解,但与分治法不同的是,适合动态规划法解的题,经分解得到的子问题往往不是相互独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。这就是动态规划法的基本思路。

一般用动态规划求解问题的时候,需要找到一个状态,以及状态之间的递推公式。


你可能感兴趣的:(面试复习-------算法与数据结构------算法设计)