#include <bits/stdc++.h>
using namespace std;
int x_1,y_1,x_2,y_2;
int dir[12][2]={{-1,-2},{-2,-2},{-2,-1},{1,2},{2,2},{2,1},{1,-2},{2,-2},{2,-1},{-1,-2},{-2,-2},{-2,-1}};
bool vis[25][25];
struct Node{
int x;
int y;
int step;
};
bool check(int x,int y){
if(x>=0&&x<20&&y>=0&&y<20&&vis[x][y]==false){
return true;
}
return false;
}
int BFS(int x,int y){
memset(vis,false,sizeof(vis));
queue<Node> Q;
Node q={x,y,0};
Q.push(q);
while(!Q.empty()){
Node t=Q.front();
Q.pop();
if(t.x==0&&t.y==0){
return t.step;
}
for(int i=0;i<12;i++){
int xx=t.x+dir[i][0];
int yy=t.y+dir[i][1];
if(check(xx,yy)){
Node m={xx,yy,t.step+1};
Q.push(m);
vis[xx][yy]=true;
}
}
}
}
int main(int argc, char** argv){
cin>>x_1>>y_1>>x_2>>y_2;
x_1--;
y_1--;
x_2--;
y_2--;
cout<<BFS(x_1,y_1)<<endl;
cout<<BFS(x_2,y_2);
return 0;
}
有没有dalao能帮忙指出问题? 3Q