| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 243 人关注过本帖
标题:迷宫求解程序没有结果~帮忙指正
只看楼主 加入收藏
草莓摩亚
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 a[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",&a[r][l]);}
      for(r=0;r<=m+1;r++)
      {a[r][0]=1;a[r][n+1]=1;};
      for(l=0;l<=n+1;l++)
      {a[0][l]=1;a[m+1][l]=1;};
      printf("您建立的迷宫为:\n");
for(r=0;r<=m+1;r++)
{for(l=0;l<=n+1;l++)
printf("%d",a[r][l]); ;
printf("\n");}
}


/*找出口*/
void search(int x,int y,int a[20][20])
{   int i;
    if(x==m&&y==n)   /*规定m,n为出口*/
{printf("找到出口");
    step=head;
    printf("(%d,%d)->",step->r,step->l);
    step=step->next;}
for(i=1;i<=4;i++)      /*尝试四个方向*/
    {if(i==1&&a[x+1][y]==0)
        x=x+1;break;
    if(i==2&&a[x-1][y]==0)
        x=x-1;break;
    if(i==3&&a[x][y+1]==0)
        y=y+1;break;
    if(i==32&&a[x][y-1]==0)
        y=y-1;break;}
    a[x][y]=2;        /*经过的地方标记为2*/
    step=(struct path*)malloc(sizeof(struct path));
    step->r=x;step->l=y;  /*坐标存入链表*/
    {
    {if(a[x+1][y]) n++;
     if(a[x-1][y]) n++;
     if(a[x][y+1]) n++;
     if(a[x][y-1]) n++;}
   if (n=4)
   {for(i=1;i<=4;i++)     /*走入单行道后原路退出*/
   {if(i==1&&a[x+1][y]==2)
            x=x+1;break;
    if(i==2&&a[x-1][y]==2)
        x=x-1;break;
    if(i==3&&a[x][y+1]==2)
        y=y+1;break;
    if(i==4&&a[x][y-1]==2)
        y=y-1;break;};
    a[x][y]=3;         /*重复走过的路标记为3*/
    step=(struct path*)malloc(sizeof(struct path));
    step->r=x;step->l=y;}};
    search(x,y,a);}   /*走下一步*/


void main()
{setupmaze(maze);
head = (struct path*)malloc(sizeof(struct path));
step=head;
step->r = 0;
step->l = 0;
step->next = NULL;
search(0,0,maze);
    }
   
搜索更多相关主题的帖子: 结构体 
2011-06-15 22:10
快速回复:迷宫求解程序没有结果~帮忙指正
数据加载中...
 
   



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

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