40分求助
查看原帖
40分求助
724648
light_searcher楼主2022/9/8 21:01

为什么不对呀?

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,m,vis[105][105];
	char a[105][105];
	int dx[4]={0,0,1,-1},dy[4]={-1,1,0,0};
	queue<pair<int,int>>q;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>a[i][j];
	q.push(make_pair(1,1));
	vis[1][1]=1;
	while(!q.empty()){
		int x=q.front().first,y=q.front().second;
		q.pop();
		for(int i=0;i<4;i++){
			int mx=dx[i]+x,my=dy[i]+y;
			if(vis[mx][my]||!(mx>=1&&mx<=n&&my>=1&&my<=m)||a[mx][my]=='#') continue;
			if(mx==n&&my==m){
				printf("Yes");
				return 0;
			}			
			q.push(make_pair(mx,my));
			vis[mx][my]=1;
		}
	}
	printf("No");
	return 0;
} 
2022/9/8 21:01
加载中...