C++ bfs 不知道具体哪里出问题了
  • 板块B3625 迷宫寻路
  • 楼主Nemo_
  • 当前回复10
  • 已保存回复10
  • 发布时间2023/7/11 14:32
  • 上次更新2023/11/3 10:33:02
查看原帖
C++ bfs 不知道具体哪里出问题了
982107
Nemo_楼主2023/7/11 14:32
#include<bits/stdc++.h>
using namespace std;
int n,m;
char c[105][105];
struct search1
{
	int x,y;
}; 
queue<search1>a;
int xx[5]={0,0,1,-1};
int yy[5]={1,-1,0,0};
int main()
{
	cin>>n>>m;
	search1 tmp;
	int xa=1,xb=1;
	tmp.x=xa; tmp.y=xb;
	a.push(tmp);//起始位置入队 
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>c[n][m];
		}
	}
	while(!a.empty())
	{
		search1 now=a.front();
		a.pop();
		if(now.x==n&&now.y==m)//判断位置 
		{
			cout<<"Yes";
			return 0;
		}
		for(int i=0;i<4;i++)
		{
			int ax=now.x+xx[i];
			int ay=now.y+yy[i];
			if(c[ax][ay]=='.'&&ax>=1&&ay>=1&&ax<=n&&ay<=m)
			{//合法 入队 (BUT 它合法但是不经过这里)
				tmp.x=ax;tmp.y=ay;
				a.push(tmp);
			}
			else
			{//非法 下一次循环 
				continue;
			}
		}
	}
	cout<<"No"<<endl;//如果队列为空且走不到(n,m) 
	return 0;
}

蒟蒻,刚学,莫喷

2023/7/11 14:32
加载中...