基础算法
算法思想
1.分治
将一个规模为N的问题分解为K个规模较小的子问题。求出小问题的解便求出大问题的解。
经典运用:大数相乘,比赛日程安排
2.贪心算法
从问题的某一个初始解出发,逐步逼近给定的目标,以便尽快求出最好的解。
经典运用:装箱问题、背包问题
3.动态规划
动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。
经典运用:最优排序二叉树、最优合并问题
4.回溯
放弃当前候选解,并继续寻找下一个候选解的过程称为回溯。
经典运用:八皇后问题、27选9彩票
5.枚举法
将问题的所有答案一一列举,根据判断条件判断此答案是否合适,一般用循环实现。
经典运用:白钱买鸡、填写运算符
6.递归算法
一个函数间接或直接的调用自身,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
经典运用:斐波那契数列(顺推法)、银行存款(逆推法)