2 条题解
-
-2
#include <queue> #include <cstring> using namespace std; int N,M,sn,sm; int a[500][500]; int dx[] = {-1,-2,-2,-1,1,2,2,1}; int dy[] = {-2,-1,1,2,2,1,-1,-2}; bool vis[500][500] = {false}; struct Node { int x; int y; int step; }; queue<Node>q; bool ia(int x,int y) { if (x >= 1 && x <= N && y >= 1 && y <= M) { return true; } return false; } void bfs(int x,int y) { q.push((Node){x,y,0}); vis[x][y] = true; a[x][y] = 0; while (!q.empty()) { Node temp = q.front(); q.pop(); for (int i = 0;i < 8;i++) { int nx = temp.x + dx[i]; int ny = temp.y + dy[i]; if (ia(nx,ny) == true && vis[nx][ny] == false) { q.push((Node){nx,ny,temp.step + 1}); a[nx][ny] = temp.step + 1; vis[nx][ny] = true; } } } } int main() { memset(a,-1,sizeof a); cin >> N >> M >> sn >> sm; bfs(sn,sm); for (int i = 1;i <= N;i++) { for (int j = 1;j <= M;j++) { printf("%-5d",a[i][j]); } cout << endl; } return 0; }
信息
- ID
- 2495
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 559
- 已通过
- 111
- 上传者