回溯
function fn(n){// 第一步 判断是否非法if(input/state is invalid){return;}//第二步 判断递归是否应当结束if(match condition){return some value;}//遍历所有可能出现的情况for(all possblie cases){//第三步 尝试下一步的可能性solution.push(cases)//递归result = fn(m)//第四步 回溯到上一步solution.pop(case)}}
动态规划
数学优化的方法 也是编程的方法
-> 子问题-> 递归找最优解 -> 组合子问题最优解
最优子结构
状态转移方程
重复子问题
将问题规模减小,推导出状态转移方程
