骑士牛

#include <bits/stdc++.h>
using namespace std;
int ant = 0;
int a1,b1,a2,b2;
int m = 10000;
int x1,yo;
char c[1000][1000];
char d[1000][1000];
void bfs(int x,int y,int ant){
    if(x<0 || x>=x1 || y<0 || y>=yo){
        return;
    }
    if(c[x][y]!='.'){
        return;
    }
    d[x][y] = ant;
    bfs(x+1,y-2,ant+1);
    bfs(x+1,y+2,ant+1);
    bfs(x+2,y+1,ant+1);
    bfs(x+2,y-1,ant+1);
    bfs(x-1,y+2,ant+1);
    bfs(x-1,y-2,ant+1);
    bfs(x-2,y+1,ant+1);
    bfs(x-2,y-1,ant+1);
}
int main() {
    cin>>x1>>yo;
       for(int i = 0;i<yo;i++){
        for(int j = 0;j<x1;j++){
            cin>>c[i][j];
        }
    }
    for(int i = 0;i<yo;i++){
        for(int j = 0;j<x1;j++){
            if(c[i][j]=='H'){
                a1 = i;
                b1 = j;
            }
            if(c[i][j]=='K'){
                a2 = i;
                b2 = j;
            }
        }
    }
    bfs(b2,a2,0);
    for(int i = 0;i<yo;i++){
        for(int j = 0;j<x1;j++){
            if(i==a1 && j==b1){
                cout<<d[i][j];
                return 0;
            }
        }
    }
    return 0;
}

 

posted @ 2025-01-22 10:00  王一行(小号)  阅读(2)  评论(0编辑  收藏  举报