爆零求助
查看原帖
爆零求助
322792
AlexandreLea楼主2020/7/26 16:58

CODE:

#include<iomanip>
#include<cstring>
#include<iostream>
using namespace std;
int HorseMap[410][410],n,m,startx,starty;
void bfs();
struct note{
    int posx,posy,step;
}que[160001];
int Head,Tail;
int main(){
    cin>>n>>m>>startx>>starty;
    memset(HorseMap,-1,sizeof(HorseMap));
    bfs();
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cout<<left<<setw(5)<<HorseMap[i][j];
        }
        cout<<endl;
    }
    return 0;
}
void bfs(){
    Head=1;
    Tail=1;
    que[Tail].posx=startx;
    que[Tail].posy=starty;
    que[Tail].step=0;
    Tail++;
    HorseMap[startx][starty]=0;
    int movx[8]={2,-2,2,-2,-1,1,-1,1},movy[8]={1,1,-1,-1,2,2,-2,-2};
    while(Head<Tail){
        int nowx=que[Head].posx;
        int nowy=que[Head].posy;
        int nowstep=que[Head].step;
        Head++;
        for(int i=0;i<8;i++){
            int nextx=nowx+movx[i];
            int nexty=nowy+movy[i];
            if(nexty < 1 || nexty > n || nextx < 1 || nextx > m ) continue;
            if(HorseMap[nextx][nexty]!=-1) continue;
            que[Tail].posx=nextx;
            que[Tail].posy=nexty;
            que[Tail].step=que[Head].step+1;
            HorseMap[nextx][nexty]=que[Tail].step;
            Tail++;
        }
    }
}
2020/7/26 16:58
加载中...