24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 308  |  回复: 0

计算机计科

新虫 (初入文坛)

[求助] 新手求大神指导,,为什么这个运行一下总要循环两次呢?

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define M 8
#define N 8
#define MAXS 100
#define OK 1
#define ERROR 0
typedef int Status;

typedef struct{
        int x, y;
}PosType;
typedef int MazeType[M+2][N+2];

typedef struct
{
        int i;
        int j;
        int di;
}SElemType;

typedef struct
{
        SElemType st[MAXS];
        int top;
}Stack;

Status MazePath(MazeType maze, Stack &S, PosType start, PosType end)
{
        int i, j, di, ftag;
        S.top++;
        S.st[S.top].i=start.x, S.st[S.top].j=start.y, S.st[S.top].di=-1;//入口进栈
        maze[start.x][start.y]= -1;
        while(S.top>-1)
        {
                i = S.st[S.top].i, j= S.st[S.top].j, di= S.st[S.top].di;//读取栈顶元素
                if(end.x==i&&end.y==j)
                        return OK;
                ftag = 0;
                while(di<4&&ftag==0)
                {
                        di++;
                        switch(di)
                        {
                                case 0: i=S.st[S.top].i+1, j=S.st[S.top].j; break; //向下
                                case 1: i=S.st[S.top].i, j=S.st[S.top].j+1; break; //向右
                                case 2: i=S.st[S.top].i-1, j=S.st[S.top].j; break; //向上
                                case 3: i=S.st[S.top].i, j=S.st[S.top].j-1; break; //向左
                        }
                        if(maze[j]==0)
                                ftag = 1;
                }
                if(ftag == 1)
                {
                        S.st[S.top].di = di;
                        S.top++;
                        S.st[S.top].i=i, S.st[S.top].j=j, S.st[S.top].di=-1; //新位置进栈
                        maze[j]=1; //做标记
                }
                else
                {
                        maze[S.st[S.top].i][S.st[S.top].j]=0;
                        S.top--;
                }
        }
        return ERROR;
}

int main()
{       
        char p;
        while(true){
                printf("请输入任意键继续,输入q时退出: ";
                scanf("%c",&p);       
                printf("\n";
                if(p=='q'||p=='Q')
                        break;
                MazeType maze;
                int i, j;
                Stack S;
                S.top = -1;
                PosType start={1,1}, end={M,N};
                srand((unsigned)time(NULL));//随机生成迷宫数组
                for(i=1; i<=M; i++)
                        for(j=1; j<=N; j++)
                                maze[j]=rand()%2;
                for(i=0; i<=M+1; i++)                //迷宫四周为1
                        maze[0]=maze[N+1]=1;
                for(j=0; j<=N+1; j++)
                        maze[0][j]=maze[M+1][j]=1;
                maze[1][1]=maze[M][N]=0;
                printf("迷宫输出:  \n";
                for(i=0; i<=M+1; i++)
                {
                        for(j=0; j<=N+1; j++)
                                printf("%3d", maze[j]);
                        printf("\n";
                }
                if(MazePath(maze, S, start, end))
                {
                        printf("迷宫路径如下:";
                        for (i=0; i<=S.top; i++)
                        {
                                printf("  (%d,%d)", S.st.i, S.st.j);
                                if((i+1)%6 == 0)
                                        printf("\n";
                        }
                        printf("\n";
                }
                else
                        printf("  无路径!\n";
        }
        return 0;
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 计算机计科 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 重庆大学材料与化工085600,初试370+,求求调剂建议 +4 shzhou_ 2026-04-01 5/250 2026-04-02 07:47 by 尚水阁主
[考研] 08工科275分求调剂 +13 AaAa7420 2026-03-31 13/650 2026-04-02 06:19 by 286640313
[考研] 一志愿北京科技大学085601材料工程英一数二初试总分335求调剂 +7 双马尾痞老板2 2026-04-01 7/350 2026-04-02 06:08 by 286640313
[考研] 英一数一408,总分284,二战真诚求调剂 +12 12.27 2026-03-30 14/700 2026-04-02 00:18 by 欣喜777
[考研] 081200-11408-276学硕求调剂 +5 崔wj 2026-03-26 5/250 2026-04-01 22:24 by guanxin1001
[考研] 298求调剂 +4 什么是胖头鱼 2026-03-30 6/300 2026-04-01 22:06 by 客尔美德
[考研] 总分343,求生物学调剂 +6 深刻的凯撒 2026-03-26 6/300 2026-04-01 15:58 by 2007huanle
[硕博家园] 博一被送出联培感觉不适应怎么办 +3 全村的狗 2026-03-31 3/150 2026-04-01 10:44 by 328838485
[考研] 0855机械初试280求调剂 +3 kazenotori 2026-03-31 3/150 2026-04-01 10:08 by JourneyLucky
[考研] 301求调剂 +8 axibli 2026-04-01 8/400 2026-04-01 09:51 by 我的船我的海
[考研] 一志愿 南京航空航天大学 ,080500材料科学与工程学硕 +10 @taotao 2026-03-31 11/550 2026-04-01 09:43 by xiayizhi
[考研] 0856材料与化工调剂,339 +10 10213207 2026-03-31 10/500 2026-04-01 08:28 by Linda Hu
[考研] 材料与化工272求调剂 +25 阿斯蒂芬2004 2026-03-28 25/1250 2026-03-31 16:27 by hypershenger
[考研] 085601 材料工程 313分 求调剂 +6 Ong3 2026-03-27 6/300 2026-03-31 15:18 by yanflower7133
[考研] 一志愿哈尔滨工业大学材料与化工方向336分 +13 辰沐5211314 2026-03-26 13/650 2026-03-31 14:37 by 记事本2026
[考研] 334求调剂 +7 Trying] 2026-03-31 7/350 2026-03-31 12:33 by 无际的草原
[考研] 298求调剂 +4 种圣赐 2026-03-28 4/200 2026-03-29 08:42 by q1092522407
[考研] 305求调剂 +8 RuiFairyrui 2026-03-28 8/400 2026-03-29 08:22 by fmesaito
[考研] 331环境科学与工程求调剂 +3 熠然好运气 2026-03-27 3/150 2026-03-28 04:11 by fmesaito
[考研] 070300化学求调剂 +4 起个名咋这么难 2026-03-27 4/200 2026-03-27 21:39 by 83503孙老师
信息提示
请填处理意见