90分求助
查看原帖
90分求助
954973
jyz2012楼主2023/5/19 18:43
#include <iostream>
using namespace std;
struct node{
    int x,y,step;//x,y表示搜索的坐标,step表示步数
}map[10001];
int book[401][401];
int n=0,m=0,sx=0,sy=0,tx,ty;//tx,ty表示搜索的位置book模拟搜索的步数
int head=1,tail=1;
int nt[8][2]={{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1}};
void bfs(){
    map[tail].x=sx;
    map[tail].y=sy;
    tail++;
    book[map[head].x][map[head].y]=0;
    while(head<tail){
        for(int i=0;i<8;i++){
            tx=map[head].x+nt[i][0];
            ty=map[head].y+nt[i][1];
            if(tx<1||tx>n||ty<1||ty>m)continue;
            if(book[tx][ty]==-1){
                map[tail].x=tx;
                map[tail].y=ty;
                map[tail].step=map[head].step+1;
                book[tx][ty]=map[tail].step;
                tail++;
            }
        }
        head++;
    }
}
int main(){
    cin>>n>>m;//表示矩阵n行m列
    cin>>sx>>sy;//表示马坐标
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            book[i][j]=-1;//将book数组初始化
        }
    }
    bfs();//调用广搜函数
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cout<<book[i][j]<<' ';
            //输出book
        }
        cout<<endl;
    }
    return 0;
}
2023/5/19 18:43
加载中...