7分求调,输出没结果,求救
查看原帖
7分求调,输出没结果,求救
952664
not_like_us楼主2024/9/27 09:21
#include<iostream>
#include<queue> 
using namespace std;
const int N=310; 
char map[N][N];
int map1[N][N],ans[N][N]={0};
int m,n;
int dx[5]={0,-1,1,0,0};
int dy[5]={0,0,0,-1,1};
int x1,y1,x2,y2;
void bfs(int x,int y)
{
	queue<int> q[2];
	q[0].push(x);
	q[1].push(y);
	map1[x][y]=1;
	while(!q[0].empty())
	{
		x=q[0].front() ;
		y=q[1].front() ;
		q[0].pop();
		q[1].pop();
		if(map[x][y]=='=')
		{
			cout<<ans[x][y]<<endl;
			return ;
		}
		if(map[x][y]<='Z'&&map[x][y]>='A')
		{
			for(int i=1;i<=n;i++)
			{
				for(int j=1;j<=m;j++)
				{
					if(map[i][j]==map[x][y]&&(i!=x||j!=y))
					{
						x=i;
						y=j;
						map1[i][j]==1; 
					}
				}
			}	 
		}
		int x3,y3;
		for(int i=1;i<=4;i++)
		{
			x3=x+dx[i];
			y3=y+dy[i];
			if(x3<=n&&y3<=m&&x3>=1&&y3>=1&&!map1[x3][y3]&&map[x3][y3]!='#')
			{
				q[0].push(x3);
				q[1].push(y3);
				ans[x3][y3]=ans[x][y]+1;
				map1[x3][y3]=1;
			}
			
		}
	 }
}

int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>map[i][j];
			if(map[i][j]=='@') 
			{
				x1=i;
				y1=j;
			}
			
		}
	}
	bfs(x1,y1);
	return 0;
 } 
2024/9/27 09:21
加载中...