求助,悬2关

P1443 马的遍历

@[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


|