为什么不行!!求调
查看原帖
为什么不行!!求调
1067504
godogod楼主2024/8/7 15:08
#include<bits/stdc++.h>
using namespace std;

int n, m, nx, ny;
int vis[405][405];
struct point {
    int x, y;
} que[10005];
bool jud[405][405];
int head, tail;
int flag = 0;
int dx[] = {1, 2, 2, 1, -1, -2, -2, -1};
int dy[] = {2, 1, -1, -2, -2, -1, 1, 2};

int main() {
    cin >> n >> m >> nx >> ny;
    memset(vis, -1, sizeof(vis));
    memset(jud, true, sizeof(jud));
    vis[nx][ny] = 0;
    head = 1, tail = 1;
    que[1].x = nx;
    que[1].y = ny;
    while (head <= tail) {
        int p = head;
        for (int i = 0; i < 8; i++) {
            int xx = que[p].x + dx[i];
            int yy = que[p].y + dy[i];
            if (xx >= 1 && xx <= m && yy >= 1 && yy <= n && vis[xx][yy] == -1) {
                tail++;
                vis[xx][yy] = vis[que[p].x][que[p].y] + 1;
                que[tail].x = xx;
                que[tail].y = yy;
                jud[xx][yy] = false;
            }
        }
        head++;
    }
    for (int a = 1; a <= n; a++) {
        for (int b = 1; b <= m; b++) {
            if (b == 1) cout << vis[a][b];
            else cout << setw(4) << vis[a][b];
        }
        cout << endl;
    }
    return 0;
}
2024/8/7 15:08
加载中...