queue队列模板

这是一篇关于解决多级冰洞问题的博客,通过广度优先搜索(BFS)策略来求解。文章指出,可以采用两种方法实现,一种是模拟队列,虽然会浪费额外空间;另一种是直接利用queue,按需开辟空间,更节省空间。最终目标是判断能否到达终点,并要求到达终点时,冰必须为裂缝状态。
摘要由CSDN通过智能技术生成

题目链接:https://codeforces.com/problemset/problem/540/C

题意:
这是一个多级冰洞,洞的每一层都是相同的平面
一个平面由完整冰和裂缝冰组成, 在一个平面上你可以4个方向进行移动
如果移动到裂缝冰,你便会向下跌一层,如果移动到完整冰,你仍可以在这个平面上进行移动,但在走过的完整冰会变为裂缝冰
最后,如果可以到达终点Yes,否No

思路:(简单的广搜即可)

需要注意的是:当你走到终点时,该冰必须为破裂冰,因为你需要从终点跌落下去,如果是完整冰,那你必须再一次走到终点才行

两种方法来写

方法1:模拟队列来写(需开一个特定的空间,会产生空间的浪费)

啊哈算法上有详细解释,是一本基础算法书,建议初学者看
#include<stdio.h>
#include<string.h>
char map[505][505];
int row,column,r1,c1,r2,c2;
int to[4][2]={
   {
   0,1},{
   0,-1},{
   1,0},{
   -1,0}};
struct Node{
   
	int x,y;
}que[250005];
int bfs(int r,int c)
{
   
	int head=1,tail=1;
	que[1].x=r;
	que[1].y=c;
	tail++;
	int tx,ty,i,flag=0;
	while(head<tail)
	{
   
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值