一.算法分析:
生成一张二维单路径迷宫图,可以想到的方法之一就是图的遍历。因为单路径顾名思义就是要求每个节点能切只能访问一次,这正好和图的遍历方法一样。其次就是图的遍历保证了只有一条路径。
运行后即如下图所示:
①首先创建一个二维数组,char maze[H][W],其中H和W必须是奇数,创建一个空间足够大的栈stack[H*W];
②初始化maze将四周存入‘w’(表示墙的意思),中间的存入‘n'(表示还未被访问的意思,中间的数组共有三种状态’n',‘y':已经被访问,’r':将要被访问)
③开始从maze[1][1]进行循环,首先判断可以访问的方向,然后随机产生一个方向,进行入栈,如果没有可以访问的方向则开始出栈,直到栈为空,跳出循环。
二.C语言实现(附加走迷宫函数path())
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#define H 11//高
#define W 11//宽
#define MAX 121//栈的深度H和W的乘积
typedef struct path {
COORD cell;
struct path *pro;
struct path *next;
}PATH;
void inimaze(char maze[H][W])//初始化函数
{
int i, j;//i高度j宽度
for (i = 1; i<H; i++)
{
for (j = 1; j<W - 1; j++)
{
maze[i][j] &