lawrence2004 2017-09-11 22:54:09
点我顶贴
收藏
删除
#include<cstring>
#include<cstdio>
int fx[9]={0,-1,-2,-2,-1,1,2,2,1};
int fy[9]={0,-2,-1,1,2,2,1,-1,-2};
struct nod{int x,y,c;};
nod q[410];
bool mp[20][20];
int a[20][20];
int main()
{
int n=10,m=9;
memset(q,0,sizeof(q));
memset(a,0,sizeof(a));
memset(mp,true,sizeof(mp));
int sx,sy,ex=1,ey=5;scanf("%d %d",&sx,&sy);
mp[sx][sy]=false;
mp[1][4]=false;mp[1][6]=false;mp[2][5]=false;
q[1].x=sx;q[1].y=sy;q[1].c=0;
int st=1,ed=2;
while(1)
{
if(q[st].x==ex&&q[st].y==ey)
{
printf("%d",q[st].c);
return 0;
}
for(int i=1;i<=8;i++)
{
int xx=q[st].x+fx[i];
int yy=q[st].y+fy[i];
if(xx<1||xx>n||yy<1||yy>m||!mp[xx][yy])continue;
mp[xx][yy]=false;
q[ed].x=xx;q[ed].y=yy;q[ed].c=q[st].c+1;
ed++;
}
st++;
}
}