新人写广搜,求助!!玄关
  • 板块灌水区
  • 楼主silent_candle
  • 当前回复9
  • 已保存回复9
  • 发布时间2024/7/11 14:03
  • 上次更新2024/7/11 15:13:06
查看原帖
新人写广搜,求助!!玄关
1339558
silent_candle楼主2024/7/11 14:03
#include<bits/stdc++.h>
using namespace std;
char a[205][205];
int go[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
int t,r,c,sx,sy,flag;
struct zb{
	int x;
	int y;
	int step;
};
void bfs(int x,int y,int step)
{
	
	zb s,n;
	s.x=x;
	s.y=y;
	s.step=step;
	queue<zb> mg;
	mg.push(s);
	while(!mg.empty())
	{
		s=mg.front();
		for(int i=0;i<4;i++)
		{
			n.x=s.x+go[i][0];
			n.y=s.y+go[i][1];
			n.step=s.step+1;
			if(a[n.x][n.y]=='E')
			{
				cout<<n.step<<endl;
				return ;
			}
			if(n.x>0&&n.x<=r&&n.y>0&&n.y<=c&&a[n.x][n.y]=='.')
			{
				a[n.x][n.y]=='#';
				mg.push(n);
			}
		}
		mg.pop();
	}
	cout<<"oop!"<<endl;
	return ;
}
int main()
{
	cin>>t;
	while(t--)
	{
		cin>>r>>c;
		for(int i=1;i<=r;i++)
		{
			for(int j=1;j<=c;j++)
			{
				cin>>a[i][j];
				if(a[i][j]=='S')
				{
					sx=i;
					sy=j;
				}
			}
		}
		bfs(sx,sy,0);
	}
	return 0;
}

这份代码在从S到E有路时可以输出,但出现没路可走的情况下没办法输出“oop!”,一直卡死,求助!

原题

2024/7/11 14:03
加载中...