sp; else
return (1);
}
else
{
if (d==8||d==1||d==2||d==6||d==7)
return (0);
else
return (1);
}
}
}
}
}
}
}
else
{
return (1);
}
}
int barrier(int i, int j, int d, int **p)
{
int m, n;
m=i;
n=j;
convert (&m, &n, d);
if (*(p[m]+n)==0)
return (1);
else
return (0);
}
int visit(int i, int j, int d, int **t)
{
int m, n;
m=i;
n=j;
convert (&m, &n, d);
if (*(t[m]+n)==0)
return (1);
else
return (0);
}
int direction(int i, int j, int d, int n, int m, int **p, int **t)
{
if (boundary(i, j, d, n, m)==0) //(i,j)元在d方向为边界
{
return (0); //d方向不可走
}
else
{
if (barrier(i, j, d, p)==0) //(i,j)元在d方向遇到障碍
{
return (0); //d方向不可走
}
else
{
if (visit(i, j, d, t)==0) //(i,j)元在d方向上的相邻单元已经走过
return (0); //d方向不可走
else
return (1); //d方向可走
}
}
}
int trial(int i, int j, int k, int n, int m, int **p, int **t)
{
int q;
q=k;
for (q++; q<=8; q++) //从k方向的下一方向开始寻找从(i,j)元可走的方向
{
if (direction(i, j, q, n, m, p, t)==1)
return (q); //找到可走方向,将其返回
}
return (0); //没有可走方向,返回0
}