笔记

深搜:


关键在于解决“当下该如何做”,“下一步如何做”与“当下如何做”是一样的。
void dfs(int step){
    判断边界
    尝试每一种可能for(){
        继续下一步dfs(step + 1);
    }
    返回
}

 

分治法(divide and conquer):


把原问题分解成规模较小的问题
从小问题的解构建出原问题的解
T(N) = 2 * T(N / 2) + O(N) --> T(N) = O(NlogN)

 


回溯法(backtracking):

在每一步进行试探,
发现一个可能的局部解,则进行下一步试探
当前所有可能都无解,则返回上一步试探
迭代实现、地柜实现

 

贪心法(greedy algorithm):


在解决问题的每个阶段,都选择当下最优的方案。
“当下最优”即“局部最优”
全局最优 == 局部最优 --> 贪心法能获得全局最优解

 

动态规划(dynamic programming):


与“分治法”有相似之处:问题分解
最优化原理(最优子结构)
无后效性
子问题不是独立的(有重叠),要避免重复计算
使用表代替递归、自底向上递推
 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值