求助!!!!!
查看原帖
求助!!!!!
1358546
Richard2024楼主2024/8/11 23:43

wa了6个,求改!!!

#include<bits/stdc++.h>
using namespace std;
#define ll long long

ll n,m;
ll sx,sy;
bool vis[405][405]={};
ll a[405][405]={};
int fx[8]={-1,-2,-2,-1,1,2,2,1};
int fy[8]={2,1,-1,-2,2,1,-1,-2};
struct data{
    ll x,y;
};
void bfs(){
    queue<data> q;
    q.push({sy,sx});
    vis[sx][sy]=true;
    a[sx][sy]=0;
    while (q.size()){
        data t=q.front();
        q.pop();
        int x=t.x,y=t.y;
        for (int i=0;i<8;i++){
            int nx=x+fx[i],ny=y+fy[i];
            if (nx>=1&&nx<=n&&ny>=1&&ny<=m&&!vis[nx][ny]){
                q.push({nx,ny});
                vis[nx][ny]=true;
                a[nx][ny]=a[x][y]+1;
            }
        }
    }
}

int main(){
    cin >> n >> m >> sx >> sy;
    memset(a,-1,sizeof(a));
    bfs();
    for (int i=1;i<=n;i++){
        for (int j=1;j<=m;j++){
            cout << setw(5) << a[i][j];
        }
        printf("\n");
    }
    return 0;
}
2024/8/11 23:43
加载中...