首页 > 其他 > 详细

广度搜索BFS

时间:2019-12-12 09:53:18      阅读:81      评论:0      收藏:0      [点我收藏+]

本人是一名菜鸟,刷leetcode被难到了,所以记录一下这个点后面希望能够快速回忆起来,bounded first search,相当于影分身之术后继续放影分身,直到结果达到为止。 特点是分身,通过辅助队列来存储分身。需要额外的空间。

leetcode 200,岛的数量

https://leetcode-cn.com/explore/learn/card/queue-stack/217/queue-and-bfs/872/

11110
11010
11000
00000

分身步骤

step1: grid[0][0]
step2: grid[0][1],grid[1][0]
setp3:grid[0][2],grid[1][1],grid[2][0]
....

基本思路,遍历grid ,每经过一个点都上下左右四个点都搜索一遍
Q1:如何确保不重复搜索? 复制一个和grid一样大小的0数组,经过后设置标识为1
Q2:开始分身搜索之术,当mark =0 ,grid =1的时候进入BFS搜索,否则断层了就算+1
Q3:BFS细节,采用大佬写的博客
https://blog.csdn.net/weixin_40546602/article/details/88546583
辅助队列,python里可以用List来做:标记mark[x][y]为1,并将待搜索的位置(x,y)push进入队列Q。
只要队列不为空,则取队头元素,按照方向数组的4个方向,拓展4个新位置newx,newy。
若新位置不在地图范围内nextX < 0 or nextX >=m or nextY <0 or nextY >=n
如果新位置未曾到达过(marked[newx][newy]为0) and 是陆地(grid[newx][newy]为‘1‘),该新位置push进入队列, 并标记marked[newx][newy] = 1。
Q4:实现后删除代码,过一天后重写

重点难点:

1.确定marked数组和grid一致,且标识统一,第一次写的时候大小反了,导致结果错误
2.确认当前xy和下一步xy很重要,第一次写的时候这里出错排查了一会

广度搜索BFS

原文:https://www.cnblogs.com/xiaozuanfeng/p/12027285.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!