你这bfs写的有点怪啊,结构体里应该是三个int的,分别表示x坐标,y坐标,当前走到这用了几步
给你看一下我代码,你参考一下
by Michael39 @ 2023-06-18 11:20:11
这是bfs阶段
```cpp
#include <iostream>
#include <queue>
#include <string>
using namespace std;
bool b[1000][1000];
string ma[1000];
int n;
int dx[4]={1,0,0,-1},dy[4]={0,1,-1,0};
struct point
{
int x;
int y;
int z;
};
void bfs(int qx,int qy,int zx,int zy)
{
b[qx][qy]=true;
queue<point> q;
point m;m.x=qx;m.y=qy;m.z=0;
q.push(m);
while(!q.empty())
{
point f=q.front();
q.pop();
if(f.x==zx&&f.y==zy)
{
cout<<f.z;return ;
}
for(int i=0;i<4;i++)
{
int newx=f.x+dx[i];
int newy=f.y+dy[i];
if(!b[newx][newy]&&newx>=0&&newx<n&&newy>=0&&newy<n&&ma[newx][newy]!='1')
{
m.x=newx;m.y=newy;
m.z=f.z+1;
b[newx][newy]=true;
q.push(m);
}
}
}
}
,,,
by Michael39 @ 2023-06-18 11:25:02