请教高手C++数据结构回溯算法解,迷宫问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 21:06:13
迷宫有两个门,一个叫做入口,一个叫做出口。把一个老鼠从一个无顶盖的大盒子的入口赶进迷宫。迷宫中设置很多隔壁。对前进的方向形成了多处障碍,在迷宫的唯一出口处放置了一块奶酪,吸引老鼠在迷宫中寻找通路以达到出口。求解迷宫问题,即找从入口到出口的路径。
【提示】对于迷宫问题,可使用栈这种数据结构实现,二维迷宫可通过矩阵表示,从出发点开始,每个点按照四个邻域计算,按照右,上,左,下的顺序搜索下一落脚点,有路则进,无路即退回前点再从下一个方向搜索。

//迷宫用栈做的
#include "stdio.h"
#include "stdlib.h"
#define INITSIZE 100
#define STACKINCRESMENT 10
#define WALL 9999
struct stack
{
int *base;
int *top;
int size;
};

struct mi
{
int val;
bool tag;
int di;
};

void init_stack(stack *);
void push(stack*,int);
int pop(stack*);
int getop(stack*);
int palace(stack*, mi p[10][10]);

int main()
{
int e;
int ch;
struct mi p[10][10];
for(int i=0;i<10;i++)
{
p[0][i].val = 0;
p[i][0].val = 0;
p[9][i].val = 0;
p[i][9].val = 0;
}
for(int j=1;j<9;j++)
{
fo