迷宫路径

int maze[m+1][n+1];//迷宫数组
int sx[m*n+1]; //保存路径
int sy[m*n+1];
int dx[4]={0,0,1,-1}; //方向
int dx[4]={1,-1,0,0};

void gomaze(int step,int x,int y) //x,y当前坐标,step要走第几步
{
int i;
sx[step]=x;sy[step]=y;//保存当前坐标
if(x==m&&y==n)//走到出口,打印路径
{
for(i=1;i<=step;i++) printf("%d %d\n",sx[i],sy[i]);//打印路径
return ;
}
for(i=0;i<4;i++)
{
int nx=x+dx[i];//尝试4个方向
int ny=y+dy[i];
if(maze[nx][ny]==0&&x>=1&&x<=m&&y<=m&&y>=1)//如果可行,递归继续
gomze(step+1,nx,ny);
}
}
原文地址:https://www.cnblogs.com/bersaty/p/2365279.html