不正经题解
2025-11-13 16:31:05
发布于:广东
0阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int n;
char maze1[1001][1001];
int maze[1001][1001];
int vis[1001][1001];
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(){
queue<action> coordinate;
int success=0;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>maze1[i][j];
maze[i][j]=maze1[i][j]-'0';
}
}
cin>>sx>>sy>>fx>>fy;
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;
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>n||y1<1){
continue;
}
if(maze[x1][y1]==1){
continue;
}
if(vis[x1][y1]){
continue;
}
vis[x1][y1]=1;
coordinate.push({x1,y1,step+1});
}
}
if(success==0){
cout<<"-1";
}
return 0;
}
这里空空如也


有帮助,赞一个