数据结构实验报告 班级: 姓名: 学号: 组员: 问题描述: 迷宫实验是取自心理学的一个古典实验
在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒中设置了许多墙,对行进方向形成了多处阻挡
盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口
对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步
老鼠经多次试验终于得到它学习走迷宫的路线
设计功能要求: 迷宫由 m 行 n 列的二维数组设置,0 表示无障碍,1 表示有障碍
设入口为(1,1),出口为(m,n),每次只能从一个无障碍单元移到周围四个方向上任一无障碍单元
编程实现对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论
算法输入:代表迷宫入口的坐标 算法输出:穿过迷宫的结果
算法要点:创建迷宫,试探法查找路 任务分派 为了达到锻炼大家独立设计算法的能力,大家一致决定,先自己独立设计算法,不论算法的好坏、难易,完完全全出自于自己的手中
在大家独立完成算法后,进行小组集中讨论,将自己的算法思想与大家交流,特别是自己最自豪的部分或是自己觉得可以改进的地方,之后得出最优结果
独立设计 求解思想: 利用递归的方式进行求解
从入口出发,按某一方向向前探索,若能走通(未走过的),即某处可以到达,则到达新点,否则试探下一方向;若所有的方向均没有通路,则沿原路返回前一点,换下一个方向再继续试探,直到所有可能的通路都探索到,或找到一条通路,或无路可走又返回到入口点
如果现在位置(i,j)处于迷宫的边界位置,则有 2 种或 3 种可能的走法,为使问题简单化,用 maze[m+2][n+2]来表示迷宫,而迷宫的四周的值全部为 1,这样做使问题简单了,每个点的试探方向全部为 4,不用再判断当前点的试探方向有几个,同时与迷宫周围是墙壁这一实际问题相一致
struct Pos {