骑士牛
#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; }