题目链接:pku1915
代码:bfs
#include<iostream>
#include <string>
#include <queue>
using namespace std;
int n,s;
int a,b,c,d,l;
bool visited[300][300];
int dir[8][2]={1,2,2,1,-1,-2,-2,-1,-1,2,2,-1,1,-2,-2,1};
struct node
{ int x,y,num;
node(int a,int b,int n=0)
{ x=a;y=b;num=n;}
};
void BFS( )
{
queue <node> q;
node tmp(a,b,0);
q.push(tmp);
int x,y;
while (!q.empty())
{
tmp=q.front();
if(tmp.x==c&&tmp.y==d)
{ cout<<tmp.num<<endl;return; }
q.pop();
for (int i=0;i<8;i++)
{
x=tmp.x+dir[i][0];y=tmp.y+dir[i][1];
if(x>=0&&y>=0&&x<l&&y<l&&visited[x][y]==0)
{ visited[x][y]=1;q.push(node(x,y,tmp.num+1)); }
}
}
}
int main()
{ cin>>n;
while(n--)
{
memset(visited,0,sizeof(visited));
cin>>l>>a>>b>>c>>d;
BFS() ;
}
//system("pause");
return 0;
}