递推算法
枚举函数
递归递归
分治游戏
贪婪基础
回溯(试探)搜索
斐波那契数列(顺推法):由n-2,n-1项获得第n项银行存款(逆推法)循环
将问题的全部可能答案都列举出来,根据判断条件判断此答案是否合适,通常用循环实现。方法
百钱买百鸡、填写运算符比赛
注意:必须有一个明确的递归结束条件;若是递归次数过多,容易形成栈溢出。while
汉诺塔问题、阶乘问题
将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。只要求出子问题的解,就可获得原问题的解。
大数相乘问题、比赛日程安排
从问题的某一个初始解出发,逐步逼近给定的目标,以便尽快求出更好的解。
1. 从问题的某一初始解出发
装箱问题、找零方案
在试探算法中,放弃当前候选解,并继续寻找下一个候选解的过程称为回溯。扩大当前候选解的规模,以继续试探的过程称为向前试探。
(为求得问题的正确解,会先委婉地试探某一种可能状况。在进行试探过程当中,一旦发现原来选择的假设状况是不正确的,立刻会自觉地退回一步从新选择,而后继续向前试探。反复进行,直到获得解或证实无解时才死心)
1.针对所给问题,定义问题的解空间
2.肯定易于搜索的解空间结构
3.以深度优先方式搜索解空间,并在搜索过程当中用剪枝函数避免无效搜索
八皇后问题、29选7彩票组合
对真实事物或者过程的虚拟。
猜数字游戏、掷骰子问题