题解
2024-01-07 16:45:52
发布于:吉林
18阅读
0回复
0点赞
#include<bits/stdc++.h>;
using namespace std;
int a,b,n[3][11],n1=1,m[50][50],s[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
char maps[50][50];
struct dd1{
int x,y,cmd;
};
void bfs(){
queue<dd1>q;
q.push({1,1,1});
while(!q.empty()){
int x=q.front().x;
int y=q.front().y;
int cmd=q.front().cmd;
q.pop();
if(x==a&&y==b){
cout<<cmd;
return;
}
for(int i=0;i<4;i++){
int xx=x+s[i][0];
int yy=y+s[i][1];
if(xx<1||yy<1||xx>a||yy>b)continue;
if(maps[xx][yy]=='#')continue;
if(m[xx][yy])continue;
m[xx][yy]=1;
if(maps[xx][yy]=='$'){
for(int j=1;j<=10;j++){
if(n[1][j]==xx&&n[2][j]==yy)continue;
m[n[1][j]][n[2][j]]=1;
q.push({n[1][j],n[2][j],cmd+1});
}
}
else q.push({xx,yy,cmd+1});
}
}
cout<<-1;
}
int main(){
cin>>a>>b;
for(int i=1;i<=a;i++){
for(int j=1;j<=b;j++){
cin>>maps[i][j];
if(maps[i][j]=='$'){
n[1][n1]=i;
n[2][n1]=j;
n1++;
}
}
}
bfs();
return 0;
}
这里空空如也
有帮助,赞一个