@[first_king](/user/995980) `%.-5d` 吧
by WA_sir @ 2023-06-03 16:28:20
@[WA_sir](/user/704156) 好像也不对,能帮我把代码改一下吗
by first_king @ 2023-06-03 16:30:19
@[first_king](/user/995980) 应该改为"%.-5d"
by JRJMC_qwqqwq @ 2023-06-03 16:30:20
@[first_king](/user/995980) 对不起,暂时没时间
by WA_sir @ 2023-06-03 16:37:16
~~而且我不会~~
by WA_sir @ 2023-06-03 16:37:31
@[WA_sir](/user/704156) 这咋还有呆呆鸟胡言乱语,人家写的没问题啊
by LgxTpre @ 2023-06-03 17:12:07
@[WA_sir](/user/704156) 第27行打错了一个
```cpp
#include <bits/stdc++.h>
using namespace std;
int n,m,x,y;
int mp[500][500];
bool vis[500][500];
int dx[8]={-2,2,-2,2,-1,1,-1,1};
int dy[8]={-1,-1,1,1,-2,-2,2,2};
struct node{
int x;
int y;
int cnt;
};
void bfs(){
queue<node> q;
node start;
start.x=x;
start.y=y;
start.cnt=0;
q.push(start);
vis[x][y]=1,mp[x][y]=0;
while(!q.empty()){
node now=q.front();
q.pop();
for(int i=0;i<8;i++){
node to;
to.x=now.x+dx[i];
to.y=now.y+dy[i];
to.cnt=now.cnt + 1;
if(to.x>=1&&to.x<=n&&to.y>=1&&to.y<=m&&!vis[to.x][to.y]){
mp[to.x][to.y]=to.cnt;
vis[to.x][to.y]=1;
q.push(to);
}
}
}
}
int main(){
cin>>n>>m>>x>>y;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
mp[i][j]=-1;
}
}
bfs();
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
printf("%-5d",mp[i][j]);
}
cout<<endl;
}
return 0;
}
```
by LgxTpre @ 2023-06-03 17:12:25
@[LgxTpre](/user/66709) 呆呆鸟不是中立吗
by WA_sir @ 2023-06-03 18:35:20
@[LgxTpre](/user/66709) 主要没仔细看
by WA_sir @ 2023-06-03 18:35:50
贴一下我的代码,我现在没时间调
```cpp
#include <bits/stdc++.h>
using namespace std;
const int dx[8] = {-1,-2,-2,-1,1,2,2,1};
const int dy[8] = {2,1,-1,-2,2,1,-1,-2};
queue<pair<int,int> > q;
int f[500][500];
bool vis[500][500];
int main(){
int n,m,x,y;
memset(f,-1,sizeof(f));
memset(vis,false,sizeof(vis));
cin >> n >> m >> x >> y;
f[x][y] = 0;
vis[x][y] = true;
q.push(make_pair(x,y));
while(!q.empty()){
int xx = q.front().first,yy = q.front().second;q.pop();
for(int i = 0; i < 8; i++){
int u = xx+dx[i],v = yy+dy[i];
if(u < 1 || u > n || v < 1 || v > m || vis[u][v])continue;
vis[u][v] = true;
q.push(make_pair(u,v));
f[u][v] = f[xx][yy]+1;
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++)
printf("%-5d",f[i][j]);
printf("\n");
}
return 0;
}
```
by ragwort @ 2023-06-03 21:48:46