题解来喽
2025-11-13 16:28:56
发布于:广东
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int t,n,m;
char maze[101][101];
int vis[101][101];
int sx,sy,fx,fy;
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
struct action{
int x,y,step;
};
int main(){
cin>>t;
for(int e=1;e<=t;e++){
queue<action> coordinate;
int success=0;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>maze[i][j];
if(maze[i][j]=='S'){
sx=i;sy=j;
}else if(maze[i][j]=='E'){
fx=i;fy=j;
}
}
}
vis[sx][sy]=1;
coordinate.push({sx,sy,0});
while(coordinate.size()){
action head=coordinate.front();
coordinate.pop();
int x=head.x;
int y=head.y;
int step=head.step;
if(x==fx&&y==fy){
cout<<step<<'\n';
success=1;
break;
}
for(int i=0;i<4;i++){
int x1=x+dx[i];
int y1=y+dy[i];
if(x1>n||x1<1||y1>m||y1<1){
continue;
}
if(maze[x1][y1]=='#'){
continue;
}
if(vis[x1][y1]){
continue;
}
vis[x1][y1]=1;
coordinate.push({x1,y1,step+1});
}
}
if(success==0){
cout<<"-1"<<'\n';
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
vis[i][j]=0;
}
}
}
return 0;
}
终于发题解了
这里空空如也


有帮助,赞一个