#include<bits/stdc++.h>
using namespace std;
int xa,ya,xb,yb;
int vis[25][25];
int dx[12]={1,-1,1,-1,2,-2,2,-2,2,-2,2,-2};
int dy[12]={2,-2,-2,2,1,-1,-1,1,2,-2,-2,2};
struct node
{
int x;
int y;
int step;
};
node s1,t;
void bfs(node s)
{
queue<node>q;
q.push(s);
while(!q.empty())
{
node tmp=q.front();
q.pop();
if(tmp.x==1&&tmp.y==1)
{
cout<<tmp.step<<endl;
return;
}
for(int i=0;i<12;i++)
{
node a=tmp;
a.x+=dx[i];
a.y+=dy[i];
a.step++;
if(vis[a.x][a.y]==0&&a.x>0&&a.y>0&&a.x<=s.x&&a.y<=s.y)
{
q.push(a);
vis[a.x][a.y]=1;
}
}
}
}
int main()
{
cin>>xa>>ya>>xb>>yb;
s1.x=xa;
s1.y=ya;
t.x=xb;
t.y=yb;
bfs(s1);
bfs(t);
return 0;
}
搞不懂为什么样例第二行没输出)