题目:
代码:
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int n,sx,sy,ex,ey;
struct node{
int x,y;
};
int dir[8][2]={-1,-2,-2,-1,-2,1,-1,2,1,2,2,1,2,-1,1,-2};
int a[101][101],vis[101][101];
queue<node> q;
void bfs(){
memset(vis,-1,sizeof(vis));
vis[sx][sy]=0;
node t={sx,sy};
q.push(t);
while(!q.empty()){
node f=q.front();
q.pop();
for(int i=0;i<8;i++){
int xx=f.x+dir[i][0];
int yy=f.y+dir[i][1];
if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&vis[xx][yy]==-1){
vis[xx][yy]=vis[f.x][f.y]+1;
t={xx,yy};
q.push(t);
if(xx==ex&&yy==ey){
return;
}
}
}
}
}
int main(){
cin>>n;
cin>>sx>>sy>>ex>>ey;
bfs();
cout<<vis[ex][ey];
return 0;
}