这代码还有什么地方可以优化
查看原帖
这代码还有什么地方可以优化
168215
铁甲战士楼主2020/10/12 21:47

RT

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int N = 410;

int n, m;
int ans[N][N];
bool book[N][N];
int dx[8] = {2, 1, 1, 2, -1, -1, -2, -2};
int dy[8] = {1, -2, 2, -1, 2, -2, 1, -1};

void bfs(int x, int y, int d) {
    if(x < 1 || y < 1 || x > n || y > m || (ans[x][y] != -1 && ans[x][y] <= d)) return;
    // q.push({x, y});
    book[x][y] = 1;
    if(ans[x][y] != -1)ans[x][y] = min(ans[x][y], d);
    else ans[x][y] = d;
    for(int i = 0 ; i < 8 ; i ++) {
        bfs(x + dx[i], y + dy[i], d + 1);
    }
    return;
}
void print() {
    for(int i = 1; i <= n ; i ++) {
        for(int j = 1; j <= m ; j ++) {
            printf("%-5d", ans[i][j]);
        }
        printf("\n");
    }
}

int main () {
    int a, b;
    scanf("%d%d%d%d", &n, &m, &a, &b);
    for(int i = 1; i <= n ; i ++) {
        for(int j = 1; j <= m ; j ++) {
            ans[i][j] = -1;
        } 
    }
    bfs(a, b, 0);
    print();
    return 0;
}
2020/10/12 21:47
加载中...