常用算法思想
根据不同的问题,可以采用如下几种常用的算法:穷举算法思想、递推算法思想、递归算法思想、分治算法思想、概率算法思想。
一、穷举算法思想。
从所有可能的情况中搜索正确的答案。 执行步骤:
1、对一种可能的情况,计算其结果。
2、判断结果是否满足要求,如果不满足则执行第1步来搜索下一个可能的情况;如果满足要求,则表示寻找到一个正确的答案。
二、递推算法思想。
递推是一种理性思维模式的代表,根据已有的数据和关系,逐步推到而得到结果。执行步骤:
1、根据已知的结果和关系,求解中间结果。
2、判定是否达到要求,如果没有达到,则继续根据已知结果和关系求解中间结果。如果满足要求,则表示寻找到一个正确的答案。
三、递归算法思想。
递归算法就是在程序中不断反复调用自身来达到求解问题的方法。递归调用时一个函数在它的函数体内调用它自身的函数调用方式。递归调用分为两种:直接递归和间接递归。
直接递归:在函数中调用函数本身。
间接递归:间接的调用一个函数,如func_a调用func_b,func_b又调用func_a。
递归的好处:代码清晰,可读性好。递归缺点:大部分递归没有明显减少代码规模和节省内存空间。递归形式比非递归形式的运行速度要慢一些。如果递归层次太深,可能会导致堆栈溢出。
四、分治算法思想。
分治算法基本思想是将一个计算复杂的问题分为规模较小,计算简单的小问题求解,然后综合各个小问题,得到最终问题的答案。执行步骤:
1、对于一个规模为N的问题,若该问题可以容易地解决,则直接解决,否则执行下面的步骤。
2、将该问题分解为M个规模较小的子问题,这些子问题互相独立,并且与原问题形式相同。
3、递归地解子问题。
4、然后,将各子问题的解合并得到原问题的解。
分治算法在程序中可以使用递归算法来进行求解。
五、概率算法思想。
概率算法执行的基本过程:
1、将问题转化为相应的几何图形S,S的面积是容易计算的,问题的结果往往对应几何图形中某一部分S1的面积。
2、然后,向几何图形中随即撒点。
3、统计几何图形S和S1中的点数。根据S的面积和S1面积的关系以及各图形中的点数来计算得到结果。
4、判断上述结果是否在需要的精度之内,如果未达到精度则执行步骤2.如果达到精度,则输出近似结果。
概率算法大致分为4种:
1)数值概率算法。
2)蒙特卡洛(Monte Carlo)算法。
3)拉斯维加斯(Las Vegas)算法。
4)舍伍德(Sherwood)算法。
参考书籍《C/C++常用算法手册》。