回 帖 发 新 帖 刷新版面

主题:编程就+分(1期)!!!

1.迷宫问题
问题描述: 
以一个m*n 的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口的通道,或得出没有通路的结论。 
迷宫数据从文件中读取出来
迷宫输入文件: 
9 8 
0 0 1 0 0 0 1 0 
0 0 1 0 0 0 1 0 
0 0 0 0 1 1 0 1 
0 1 1 1 0 0 1 0 
0 0 0 1 0 0 0 0 
0 1 0 0 0 1 0 1
0 1 1 1 1 0 0 1 
1 1 0 0 0 1 0 1 
1 1 0 0 0 0 0 0 




回复列表 (共22个回复)

21 楼

接上BOOLEAN judgeStack(STACK varstack,int X,int Y) 
{
    int i;
    if(varstack.top==varstack.base) return TRUE;
    for(i=varstack.base;i<varstack.top;i++)
    {
        if(varstack.stackX[i]==X && varstack.stackY[i]==Y) return FALSE;
    }
    return TRUE;
}
DIRECTION nextDir(int *X,int *Y,DIRECTION nowdir)  
{
     switch(nowdir)
     {
         case NODIR:
             (*Y)++;
             return EAST;
             break;
         case EAST:
             (*X)++;
             return SOUTH;
             break;
         case SOUTH:
             (*Y)--;
             return WEST;
             break;
         case WEST:
             (*X)--;
             return NORTH;
             break;
     }
     printf("ERROR!"); 
     exit(1);
}

22 楼

这里是PASCAL区,建议不要发C语言。

回溯
把走过的格字做上标记,不过需要注意的是要注意避免出现回溯后标记未取消的情况(我曾经做这题时犯过这错)。

我来回复

您尚未登录,请登录后再回复。点此登录或注册