广搜版题解(点赞)
2024-11-30 13:44:15
发布于:广东
1阅读
0回复
0点赞
#include<iostream>
#include<queue>
using namespace std;
int r,c;
char mp[50][50]; //地图
bool vis[50][50];
//定义方向数组
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
struct node{
int x,y,step; //从起点到(x,y)一共step步
}l,r1;
int main(){
cin>>r>>c;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
cin>>mp[i][j];
}
}
queue<node> q;
q.push({1,1,1});
vis[1][1]=1; //标记
while(q.size()){
r1 = q.front();
q.pop();
if(r1.x==r && r1.y==c){
cout<<r1.step;
break;
}
for(int i=0;i<4;i++){
l.x = r1.x + dx[i];
l.y= r1.y+ dy[i];
l.step=r1.step+1;
if(l.x>=1 && l.x<=r && l.y>=1 && l.y<=c && mp[l.x][l.y]=='.' && !vis[l.x][l.y]){
vis[l.x][l.y]=1;
q.push(l);
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个