逃离迷宫题解
2023-08-17 16:14:56
发布于:广东
我真是太勇了
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int n,m,vis[25][25],x1,y1,x2,y2;
char a[25][25];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
struct node{
int x,y;
};
void bfs(){
memset(vis,-1,sizeof vis);
queue<node> que;
que.push({x1,y1});
vis[x1][y1]=0;
while(!que.empty()){
node n1 = que.front();
que.pop();
for(int i=0;i<4;i++){
int xx=n1.x+dx[i];
int yy=n1.y+dy[i];
if(xx>=0 && xx<n && yy>=0 && yy<m && a[xx][yy]!='#' && vis[xx][yy]==-1){
que.push({xx,yy});
vis[xx][yy] = vis[n1.x][n1.y]+1;
if(xx==x2 && yy==y2) return;
}
}
}
}
int main(){
while(cin>>n>>m){
if(n==0 && m==0) return 0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
if(a[i][j]=='@') x1=i,y1=j;
if(a[i][j]=='*') x2=i,y2=j;
}
}
bfs();
cout<<vis[x2][y2]<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个