| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 408 人关注过本帖
标题:迷宫程序执行没有结果,帮忙修改一下吧~~
只看楼主 加入收藏
草莓摩亚
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-6-14
结帖率:100%
收藏
 问题点数:0 回复次数:0 
迷宫程序执行没有结果,帮忙修改一下吧~~
我刚写的迷宫程序,怎么运行都不对啊,但是不知道该怎么改。麻烦会的人帮帮忙修改一下

#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);
    }
   
搜索更多相关主题的帖子: include 
2011-06-16 10:38
快速回复:迷宫程序执行没有结果,帮忙修改一下吧~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026348 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved