bfs 70分 求助悬关

P1443 马的遍历

```cpp #include<stdio.h> #include<iostream> #include<queue> using namespace std; int n, m, x, y; int map[405][405]; int dx[10]={-2, -2, -1, 1, 2, 2, 1, -1}; int dy[10]={-1, 1, 2, 2, 1, -1 ,-2, -2}; bool flag[405][405]; struct cdn{ int x; int y; }; queue <cdn> a; void bfs(){ int s=1, d=0; while(a.empty()==0) { cdn g; g=a.front(); if(d==0) d=a.size(); for(int i=0;i<8;i++) { int tx=g.x+dx[i]; int ty=g.y+dy[i]; if(tx>=1 && tx<=n && ty>=1 && ty<=m && flag[tx][ty]==1) { flag[tx][ty]=0; map[tx][ty]=s; cdn w; w.x=tx; w.y=ty; a.push(w); } } d--; if(d==0) s++; a.pop(); } return ; } int f(int x){ if(x==0) return 1; int sum=0; while(x!=0) { x=x/10; sum++; } return sum; } void print(int x, int y){ if(map[x][y]==-1) { cout<<-1<<" "; return ; } int n=5-f(map[x][y]); cout<<map[x][y]; for(int i=0;i<n;i++) cout<<" "; return ; } int main() { cin>>n>>m>>x>>y; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { map[i][j]=-1; flag[i][j]=1; } flag[x][y]=0; map[x][y]=0; cdn k; k.x=x; k.y=y; a.push(k); bfs(); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) print(i, j); cout<<endl; } return 0; } ```
by billtun @ 2024-03-31 14:12:06


@[YU15242911770](/user/1282388) 把 ```cpp ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); ``` 关了试试
by HAha201205221633 @ 2024-04-02 20:19:26


@[HAha201205221633](/user/892365) 啊???AC了,大佬nb,关注了,这是为什么呀?
by YU15242911770 @ 2024-04-02 20:34:28


因为 ```cpp ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); ``` 把 iostream 的 cin 和 cout 与 stdio 的 scanf 和 printf 的同步关了,所以加了这个就不能用printf了。
by HAha201205221633 @ 2024-04-02 20:41:19


|