各种算法优点缺点
1、递归算法
解题思路:
1、明确递归函数的输入输出,先不管函数里边的具体代码实现。
2、寻找递归结束条件
3、确定递归关系式,怎么通过各种递归调用组合来解决问题。
2、分治算法
思想:
将一个复杂的大问题分成两个或多个相似的子问题,再逐步拆分,直到子问题可以简单求解。
解题思路:
1、分解,原问题分解为若干个规模较小,相互独立,和原问题形式相同的子问题。
2、解决,解决各个子问题
3、合并,将子问题的解合并为原问题的解
3、贪心算法
思想:
总是做出当前的最优选择,期望通过当前的最优解来获得整体的最优解。
4、回溯算法
思想:
回溯算法是一种试探法,它会在每一步做出选择,一旦发现这个选择无法得到预期结果,就回溯回去重新做出选择。深度优先搜索利用的就是回溯法的思想。
5、动态规划
思想:
分治算法要求各子问题是相互独立的,而动态规划的各个子问题是相互关联的。适用于子问题有重叠的情况,,即各个子问题有公共的子子问题。
解题思路:
1、定义子问题
2、实现需要反复执行解决的子子问题部分
3、识别并求解出边界条件
6、枚举算法
思想:
将问题的所有可能答案一一列举,然后根据条件判断此答案是否合适,保留合适的,丢弃不合适的
解题思路:
1、确定枚举对象、枚举范围、判定条件
2、逐一列举可能的解,判定每个解是否是问题的解