标题:迷宫问题,运行不了,是为什么啊
只看楼主
zengaa
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-29
结帖率:0
已结贴  问题点数:20 回复次数:5 
迷宫问题,运行不了,是为什么啊
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#define m 8
#define N 8
#define  STACK_SIZE  N*N
#define TRUE    1
#define FALSE   0
typedef struct{
    int a;
    int b;
    int dirt;
}element;
element stack[STACK_SIZE];
typedef struct{
    int x;
    int y;
}item;
item move[8];
int g;
int l;
int x1;
int x2;
int y1;
int y2;
int maze[N][N];
int mark[N][N];
void add(int *top,element Q){
    if(*top>=STACK_SIZE-1){
        printf("The stack is full\n");
        return;
    }
    stack[++*top]=Q;
}
element delete_top(int *top){
    if(*top==-1){
        printf("the stack is empty \n");
        exit(1);
    }
    return stack[(*top)--];
}

void shurukou(){
    printf("\n输入迷宫的入口:\n");
    scanf("%d%d",&x1,&y1);
    printf("\n输入迷宫出口:\n");
    scanf("%d%d",&x2,&y2);
}
void shuru (){
    printf("输入行数:\n");
    scanf("%d",&g);
    printf("输入列数:\n");
    scanf("%d",&l);
}
int showplay(int maze[][N])
{
    int i,j;
printf("迷宫的矩阵如下: \n");
for(i=1;i<=g;i++)
{printf("\n");
  for(j=1;j<=l;j++)
      printf("%d",maze[i][j]);
}
}
int createmaze(int maze[][N]){
    shuru();
    int i,j;
    for(i=1;i<=g;i++)
        for(j=1;j<=l;j++)
            maze[i][j]=(int)(rand()%2);
        printf("自动生成迷宫中....\n");
        showplay(maze);
        shurukou();}
int tonglu(){
    element *w;
    int i,j;

    for(i=0;i<m;i++)
        for(j=0;j<N;j++)
            printf("所有通路为(由下往上):\n");
            w=stack;
        while(w!=NULL)
        {
            printf("%d%d)\n",w.a,w.b);
            w=w->next;
        }
        
}
void path(void){
    int i,j,a,b,next_a,next_b,dirt,found=FALSE;
    element position;
    int top=0;
    mark[1][1]=1;
    stack[0].a=1;
    stack[0].b=1;
    stack[0].dirt=1;
    move[0].x=-1;move[0].y=0;
    move[1].x=-1;move[1].y=1;
    move[2].x=0;move[2].y=1;
    move[3].x=1;move[3].y=1;
       move[4].x=1;move[4].y=0;
    move[5].x=1;move[5].y=-1;
    move[6].x=0;move[6].y=-1;
    move[7].x=-1;move[7].y=-1;
    while(top>-1&&!found){
        position=delete_top(&top);
        a=position.a;
        b=position.b;
        while(dirt<8&&!found){
            next_a=a+move[dirt].x;
            next_b=b+move[dirt].y;
            if(next_a==x2&&next_b==y2)
                found=TRUE;
            else if(!maze[next_a][next_b]&&!mark[next_a][next_b])
            {
                mark[next_a][next_b]=1;
            position.a=a;
            position.b=b;
            position.dirt=++dirt;
            add(&top,position);
            a=next_a;
            b=next_b;
            dirt=0;
            }
            else ++dirt;
    }
    }
    if(found)
    {
   

tonglu();}
}

void main()
{
        createmaze(int r[][]);
    path();
}
搜索更多相关主题的帖子: include element 
2015-05-30 10:20
林月儿
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:20 
先改这两处吧
    for(i=0;i<m;i++)
        for(j=0;j<N;j++){
            printf("所有通路为(由下往上):\n");
            w=stack;
        while(w!=NULL)
        {
            printf("%d%d)\n",w->a,w->b);
            w++;
        }
        }
        
}
///////////////////////////////////////////
int main()
{
    int r[8][8];
    createmaze(r);
    path();
}

剑栈风樯各苦辛,别时冰雪到时春
2015-05-30 11:33
zengaa
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-29
得分:0 
回复 2楼 林月儿
要怎么改啊?
2015-05-30 11:48
zengaa
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-29
得分:0 
还是错的,运行不了啊
2015-05-30 11:55
zengaa
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-29
得分:0 
回复 2楼 林月儿
还是错的,运行不了
2015-05-30 11:55
林月儿
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
运行遇到 path()函数报错,改path()函数吧
int createmaze(int maze[][N]){
    shuru();
    int i,j;
    for(i=1;i<=g;i++)
        for(j=1;j<=l;j++)
            maze[i][j]=(int)(rand()%2);
        printf("自动生成迷宫中....\n");
        showplay(maze);
        shurukou();
    return 1;
}
int main()
{
    int r[8][8];
    if(createmaze(r))
    path();
    else printf("\nwrong!\n");
}

剑栈风樯各苦辛,别时冰雪到时春
2015-05-30 12:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-445974-1-1.html




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

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