完啦7AC + 3 MLE了 怎么办
原题链接:8048.马的遍历2024-09-03 19:33:36
发布于:广东
#include <bits/stdc++.h>
using namespace std;
int x,y,n,m;
int dir[8][2] = {{-2,-1},{-2,1},{1,2},{-1,2},{2,1},{2,-1},{-1,-2},{1,-2}};
int mp[405][405];
bool vis[405][405];
struct node{
int x,y,s;
};
int main(){
memset(mp,-1,sizeof mp);
cin >> n >> m >> x >>y;
queue<node>q;
q.push({x,y,0});
while(!q.empty()){
auto f = q.front();
q.pop();
vis[f.x][f.y] = 1;
mp[f.x][f.y] = f.s;
for(int i=0;i<8;i++){
int nx = f.x + dir[i][0],ny = f.y + dir[i][1];
if(nx < 1 or nx > n or ny < 1 or ny > m)continue;
if(vis[nx][ny])continue;
q.push({nx,ny,f.s+1});
}
}for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
cout << mp[i][j] << " ";
cout << endl;
}
}
全部评论 1
看到你这边已经通过这道题目了,如果没有问题的话可以在帖子标题中注明【已解决】的字眼。
2024-09-03 来自 加拿大
0
有帮助,赞一个