不明白,为什么提交正确,而样例不过。
//最少步数 胡乘铭
#include<bits/stdc++.h>
using namespace std;
const int N=110;
const int flag[12][2]={{-2,-2},{-2,-1},{-2,1},{-2,2},{-1,2},{1,2},{2,2},{2,1},{2,-1},{2,-2},{1,-2},{-1,-2}};
int q[N*N][2],c[N];
int n1,m1,n2,m2;
bool p[N][N];
void bfs(int x,int y)
{
int head=0,tail=1;p[x][y]=true;
q[1][0]=x,q[1][1]=y;
while(head<tail)
{
++head;
x=q[head][0];y=q[head][1];
for(int i=0;i<=11;i++)
{
int x1=x+flag[i][0];int y1=y+flag[i][1];
if(x1>=1&&x1<=100&&y1>=1&&y1<=100&&!p[x1][y1])
{
p[x1][y1]=true;
q[++tail][0]=x1;q[tail][1]=y1;
c[tail]=c[head]+1;
if(x1==1&&y1==1)
{
cout<<c[tail]<<endl;return;
}
}
}
}
}
int main()
{
cin>>n1>>m1>>n2>>m2;
bfs(n1,m1);
memset(p,0,sizeof(p));
bfs(n2,m2);
return 0;
}
