算法:如果说一个程序就是一个人的话,那么数据结构就是人的躯体,而算法就是这个人的灵魂
算法的基本思想:
1.穷举法思想:在可能的解空间列出所有解,并把每个解进行验证,从而得到答案
2.分治思想:将大问题分解成小问题,然后将小问题都解决了也就解决了大问题
3.递归思想:直接或者间接地调用原算法本身
Tips: 递归和分治经常一起使用,因为由分治的方法产生的子问题往往是原问题的更小规模.反复使用分治手段可以使原问题和子问题类型一致,但规模不断缩小,最终使得子问题比较容易求解。在这里因为子问题跟原问题的类型相同,因此就具有了递归性
4.贪心算法:通过局部的最优解来得到问题的最优解
5.回溯法:是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法(example: N皇后问题)