DFS与BFS

搜索算法是有目的性的穷举问题的部分或所有可能情况,从而求出可行解的方法。
搜索算法分为:深度优先搜索(深搜,dfs)、广度优先搜索(广搜,bfs)…。剩下的没学也不会,先不管了^ _ ^。

DFS
dfs:从一个初始状态出发,一层一层的往下遍历,直到无法前往下一层或者到达终点。其中的剪枝就是根据题意减去没必要遍历的状态,从而减少时间和空间复杂度。
这里提一下一个极其强大的剪枝方法:
奇偶性剪枝;博客:https://blog.csdn.net/moguxiaozhe/article/details/44941543,建议自己划下01图。
BFS
bfs:从初始状态出发,遍历完当前层所有状态然后再前往下一层。
一般那种找最小步数的题,bfs要更快。
实现方法:队列模拟。
首先队列是先进先出,使初始状态入队后,让其出队,判断当前状态是否满足条件,然后根据当前状态推出下一层的状态,使其入队。循环操作。
这样下来,队列中在后面的状态层数一定会>=前面的状态。
队列的基本操作:
back() :返回最后一个元素
empty() :如果队列空则返回真
front() :返回第一个元素
pop() :删除第一个元素
push() :在末尾加入一个元素
size() :返回队列中元素的个数

然后没了,搜索这东西看着麻烦,其实还真的很麻烦。不过简单的搜索的题还是有点规律的,写的多了,自然就顺手了。还是多刷题吧。
下面推点题好了;
hdu:1016,1241,2553,1175,2128,1716;
poj:2110, 1088, 3414;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值