使用c语言运用栈原理写一个迷宫旅游游戏
时间: 2023-02-07 13:55:54 浏览: 73
这是一个使用栈来解决的经典问题。
我们可以用一个栈来存储当前路径上的每个坐标,并使用四个循环变量来枚举上下左右四个方向。
在进入每个新方格之前,我们都将其坐标压入栈中。如果遇到了迷宫的出口,则打印路径并退出。如果没有找到出口,则弹出栈顶元素,并继续搜索。
下面是代码示例:
```
#define MAX_ROW 100
#define MAX_COL 100
typedef struct {
int x;
int y;
} Pos;
// 迷宫地图
int maze[MAX_ROW][MAX_COL] = {
// 省略地图数据
};
// 判断坐标 (x, y) 是否合法
int isValidPos(int x, int y) {
// 坐标越界或者是障碍物,返回 0
if (x < 0 || x >= MAX_ROW || y < 0 || y >= MAX_COL || maze[x][y] == 1) {
return 0;
}
return 1;
}
// 利用栈来搜索迷宫
void searchMaze(int startX, int startY, int endX, int endY) {
Pos stack[MAX_ROW * MAX_COL];
int top = -1;
// 初始化栈,并将起点坐标压入栈中
stack[++top] = (Pos){startX, startY};
maze[startX][startY] = 1; // 标记起点已访问
// 定义四个循环变量,分别表示上下左右四个方向
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};
while (top >= 0) {
// 取出栈顶元素
Pos cur = stack[top];
top--;