搜索
搜索
ll的小唐
这个作者很懒,什么都没留下…
展开
-
01BFS
这样可以保证将代价小的先出队。优化了之前随意入队出队的方式。保证了单调性后也就意味着只要碰到结果坐标出队了就证明答案出现。否则在这种图中只用bfs是不可以直接遍历到就是答案的,毕竟他不符合越远越大的规则。那么如果不用01BFS就得全部跑一遍,其实就不知道什么时候退出了。而01BFS其实就是使用一个双端队列将0的代价保存进队首,1的代价保存进对尾。01BFS顾名思义是用在代价只有0和1的图里面的。原创 2023-11-07 11:01:09 · 144 阅读 · 0 评论 -
双向广搜
在这里使用交替进行的双向广搜,将初始状态和结束状态都放进队列里面,这样在去队列里面的数进行移动的时候就是在交替的从开头和结尾出进行BFS。那么我们将开头推出来的状态设为1,结尾推出来的状态设为2,当某个状态推演之后和原来状态一个是1一个是2的时候就证明双端相遇了。本题给出得是一个数,我们可以将其使用字符串保存起来,也可以直接保存数字。在移动的过程中自然还是要转换成二维数组的方式去移动。原创 2023-11-07 10:00:43 · 111 阅读 · 0 评论 -
广搜优化-洋流
本题才是用BFS进行求解,但是单纯的使用BFS会出现错误,因为并不是每一步都是相同的消耗,如果让消耗多的先进入了那么该点就不是最小的消耗。可以使用一个优先队列来维护,每次都让最小的消耗去走,这样可以保持没一点都是由最小的来进入。但在本题当中,由于是01之间的消耗。所以可以使用一个双端队列,如果是0的消耗就放入对头,如果是1的消耗就放到队尾这样就保持队首一直是小的。在这里面到达某一个坐标的消耗用一个二维数组保存,并且要在队列头拿出来的时候进行判断不然会出现错误。原创 2023-09-30 13:45:17 · 37 阅读 · 0 评论