该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void Step(int xi,int yi,int xe,int ye )
{int i,j,cnt;
char di,find;
top ++;
stack[top].i= xi;
stack[top].j= yi;
stack[top].di= -1;
a[xi][yi]= -1;
while (top > -1 )
{
i = stack[top].i ;
j = stack[top].j ;
di= stack[top].di;
if (i == xe && j == ye )
{cnt= 0;printf("入口:");
for (i = 0;i <= top;i ++ )
{
printf("( %d ,%d )---> ",stack[i].i ,stack[i].j );
if ( (++cnt % 5 ) == 0 )
printf("\n");
}
printf("出口");
printf("\n");
return ;
}
find= 0;
di ++;
while (di <4 )
{
switch ( di )
{
case 0: i= stack[top].i - 1;j= stack[top].j ; break;
case 1: i= stack[top].i ; j= stack[top].j + 1;break;
case 2: i= stack[top].i + 1; j= stack[top].j ; break;
case 3: i= stack[top].i ; j= stack[top].j -1 ;break;
}
if (a[i][j] == 0 )
{
stack[top].di= di;
top ++;
stack[top].i= i;
stack[top].j= j;
stack[top].di= -1;find= 1;
a[i][j] = -1;
break;
}di ++;
}
if ( !find )
{
a[stack[top].i ][stack[top].j ] = 0 ;
top --;
}
}
return ;
}