40,求助

P1443 马的遍历

这道题不是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


|