这道题不是BFS吗?我看不懂您的代码
by BIG_Showers @ 2019-02-14 16:27:52
```cpp
#include <queue>
#include <cstdio>
struct data
{
int x,y,step;
}tmp;
std::queue <data> que;
int m,n,place[405][405],add[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}};
void bfs(data beg)
{
que.push(beg);
place[beg.x][beg.y]=0;
while(!que.empty())
{
for(int i=0;i<=7;i++)
{
int nx=que.front().x+add[i][0],ny=que.front().y+add[i][1];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&place[nx][ny]==-1)
{
tmp.x=nx;
tmp.y=ny;
tmp.step=que.front().step+1;
place[nx][ny]=tmp.step;
que.push(tmp);
}
}
que.pop();
}
return;
}
int main()
{
scanf("%d%d%d%d",&n,&m,&tmp.x,&tmp.y);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) place[i][j]=-1;
tmp.step=0;
bfs(tmp);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) printf("%-5d",place[i][j]);
putchar('\n');
}
return 0;
}
```
by BIG_Showers @ 2019-02-14 16:28:26