迷宫程序执行没有结果,帮忙修改一下吧~~
我刚写的迷宫程序,怎么运行都不对啊,但是不知道该怎么改。麻烦会的人帮帮忙修改一下#include"stdio.h"
#include"malloc.h"
struct path
{int r,l;
struct path *next;};
struct path *step;
struct path *head;
int maze[20][20];int m,n;
/*建立迷宫*/
void setupmaze(int maze[20][20])
{
int r,l;
printf("请输入建立迷宫的行数:\n");
scanf("%d",&m);
printf("请输入建立迷宫的列数:\n");
scanf("%d",&n);
for(r=1;r<=m;r++)
{printf("请输入迷宫的第%d行,以1代表墙,0代表路(以空格隔开):\n",r);
for(l=1;l<=n;l++)
scanf("%d",&maze[r][l]);}
for(r=0;r<=m+1;r++)
{maze[r][0]=1;maze[r][n+1]=1;};
for(l=0;l<=n+1;l++)
{maze[0][l]=1;maze[m+1][l]=1;};
printf("您建立的迷宫为:\n");
for(r=0;r<=m+1;r++)
{for(l=0;l<=n+1;l++)
printf("%d",maze[r][l]); ;
printf("\n");}
}
/*找出口*/
void search(int x,int y,int maze[20][20])/*因为我没有学过栈函数,所以只能这样写了*/
{ int i;int a=0;
if(x==m&&y==n&&maze[m][n]==0)/*规定m,n为出口*/
{printf("找到出口");
step=head;
printf("(%d,%d)->",step->r,step->l);
step=step->next;return;}
maze[x][y]=2; /*走过的路标记为2*/
for(i=1;i<=4;i++) /*尝试四个方向*/
{if(i==1&&maze[x+1][y]==0)
{x=x+1;break;}
if(i==2&&maze[x-1][y]==0)
{x=x-1;break;}
if(i==3&&maze[x][y+1]==0)
{y=y+1;break;}
if(i==4&&maze[x][y-1]==0)
{y=y-1;break;}
}
step=(struct path*)malloc(sizeof(struct path));
step->r=x;step->l=y;
{if(maze[x+1][y]) a++;
if(maze[x-1][y]) a++;
if(maze[x][y+1]) a++;
if(maze[x][y-1]) a++;}
if (a=4) /*如果四面都为墙或走过的路,则沿原路返回*/
{for(i=1;i<=4;i++)
{ if(i==1&&maze[x+1][y]==2)
{x=x+1;break;}
if(i==2&&maze[x-1][y]==2)
{x=x-1;break;}
if(i==3&&maze[x][y+1]==2)
{y=y+1;break;}
if(i==4&&maze[x][y-1]==2)
{y=y-1;break;}};
maze[x][y]=3; /*再次走过的路标记为3*/
step=(struct path*)malloc(sizeof(struct path));
step->r=x;step->l=y;}
search(x,y,maze);} /*走下一步*/
void main()
{setupmaze(maze);printf("%d",maze[2][4]);
head = (struct path*)malloc(sizeof(struct path));
step=head;
step->r = 0;
step->l = 0;
step->next = NULL;
search(1,1,maze);
}