遇到C语言一个输出迷宫路径的困难,求各位大神帮忙解决
#include <stdio.h>#include <windows.h>
#include<conio.h>
#include<time.h>
#define MATH_I 40
#define MATH_J 40
void PrintPath(int,int);
void MakePath(int,int);
void ArithmeticPath(int,int);
void writhCursor(int,int,char*);
void Control(int,int);
void Person(int,int,int,int);
int z1,z2;
int a=0,b=1;
int path[MATH_I][MATH_J];
int top=0;
typedef struct plot
{
int col;
int row;
} plot;
plot stack[200];
void pop()
{
top--;
}
void push(int x,int y)
{
stack[top].col=x;
stack[top].row=y;
top++;
}
void MakePath(int x,int y)
{
int i,j;
for(i=0;i<=x;i++)
for(j=0;j<=y;j++)
path[i][j]=1; //将所有节点设置成未访问节点
for(i=0;i<=x;i++)
for(j=0;j<=y;j++)
if(i==0||i==x||j==0||j==y)
path[i][j]=0; path[2][1]=0; //设置迷宫的入口和出口
path[x-2][y-1]=0;
srand((unsigned)time(NULL)); //获取系统时间
ArithmeticPath(rand()%(x/2),rand()%(y/2));
}
void PrintPath(int x,int y)
{
int i,j;
for(i=1;i<=x-1;i++)
{
for(j=1;j<=y-1;j++)
{
if(path[i][j]==0)
printf(" ");
else
{
printf("█");
}
}
printf("\n");
}
}
void ArithmeticPath(int x,int y)
{
int init[4][2]={0,1,1,0,0,-1,-1,0}; //使随机选的点能在其四周移动
int z1=x*2,z2=y*2; //防止随机选的点靠近墙不能在该位置生成路
int next,turn,i;
path[z1][z2]=0; //代表该节点以访问过
turn = rand()%2?1:3; //为了可以随机分配移动方向
for(i=0,next=rand()%4;i<4;i++,next=(next+turn)%4)
if(path[z1+2*init[next][0]][z2+2*init[next][1]]==1)
{
path[z1+init[next][0]][z2+init[next][1]]=0; //如果前两个是墙,使前一个变为路
ArithmeticPath(x+init[next][0], y+init[next][1]); //递归调用
}
}
void depth_search(int x,int y)
{
push(x,y);
path[x][y]=2;
while(1)
{
if(y+1<11&&path[x][y+1]==0)
{
y++;
push(x,y);
path[x][y]=2;
continue;
}
if(x+1<11&&path[x+1][y]==0)
{
x++;
push(x,y);
path[x][y]=2;
continue;
}
if(y>1&&path[x][y-1]==0)
{
y--;
path[x][y];
path[x][y]=2;
continue;
}
if(x>1&&path[x-1][y]==0)
{
x--;
path[x][y];
path[x][y]=2;
continue;
}
if(x!=10&&y!=11)
pop();
else
break;
}
}
void print_path()
{
for(int i=0;i<top;i++)
{
printf("<%d,%d> ",stack[i].col,stack[i].row);
}
}
int main()
{
MakePath(12,12);
PrintPath(12,12);
depth_search(2,1);;
print_path();
return 0;
}
depth_search函数的最后一个if如果没有那个else还能够输出一部分路径如图:
要是加上那个else后就没有了输出结果
本人新人一枚,请各位大神帮忙解决