BFS中的Flood Fill和最短路模型

5 篇文章 0 订阅

Flood Fill核心思想:对每次加进来的格子判断是否能够加入新的格子

可以在线性时间复杂度内,找到某个点所在的连通块。宽搜是不会爆栈的,深搜可能会爆栈。找连通块。在算法题里面一般栈空间为1M,100000层可能就会爆。
例题 :池塘计数
学到一个新写法:判断八联通用两重循环

for(int i = t.x-1;i<=t.x+1;i++)
{
    for(int j=t.y-1;j<=t.y+1;j++)
    {
        if(i==t.x&&j==t.y) continue;
        balabala
    }
}

例题2:城堡问题
这里输入采用的数字,在判断的时候不用先把图恢复,直接用 g[t.x][t.y] >> 1 & 1 的值来判断是否有墙,有墙值为1.

例题3.山谷和山峰
本题在判断的时候往外扩展时需要判断与其相邻的点的情况

最短路模型:宽搜第一次搜到的时候,就是这个点到起点最短的路径。

例题1:迷宫问题
这里需要保存路径,可以把st数组修改一下,存储其父节点。还有一个技巧是从终点开始搜索,搜到起点,这样的话输出就是正向了。
在这里插入图片描述
例题2:武士风度的牛
本题只要注意是走日就行了,跟走迷宫类似

例题3:抓住那头牛
为什么图里面边权都是1的时候可以用bfs来求?
可以看成是一个特殊的迪杰斯特拉算法,所有边权都是1,队列就是优先队列,对头是当前最小值,由于迪杰斯特拉正确,那么这样也是正确的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值