老鼠走迷宫c语言代码
时间: 2024-09-17 08:00:18 浏览: 37
C语言-老鼠走迷宫(广度优先寻路算法)vc6编译
老鼠走迷宫通常是一个经典的计算机科学算法练习,可以使用递归、循环或者其他搜索策略来解决。这里提供一个简单的基于深度优先搜索(DFS)的C语言伪代码示例:
```c
#include <stdio.h>
#define R 5 // 迷宫行数
#define C 5 // 迷宫列数
// 定义迷宫矩阵,0表示空地,1表示墙
int maze[R][C] = {
{0, 1, 1, 1, 0},
{1, 0, 0, 0, 1},
{1, 0, 1, 0, 1},
{1, 0, 0, 1, 1},
{0, 1, 1, 0, 0} // 可替换为实际迷宫矩阵
};
// 位置结构体
typedef struct Position {
int row;
int col;
} Position;
// 检查当前位置是否有效
int is_valid(Position pos) {
return pos.row >= 0 && pos.row < R && pos.col >= 0 && pos.col < C && maze[pos.row][pos.col] == 0;
}
// 从起点开始寻找出口
void rat_in_maze(Position start) {
Position current = start; // 当前位置
if (maze[current.row][current.col] == 2) {
printf("Rat found the exit!\n");
return;
}
if (is_valid(current)) {
// 搜索所有相邻的位置
Position neighbors[] = { {current.row - 1, current.col}, {current.row + 1, current.col}, {current.row, current.col - 1}, {current.row, current.col + 1} };
for (int i = 0; i < sizeof(neighbors) / sizeof(neighbors[0]); i++) {
Position next = neighbors[i];
if (is_valid(next)) {
maze[current.row][current.col] = 1; // 标记路径已过
rat_in_maze(next);
}
}
maze[current.row][current.col] = 0; // 如果回溯到原来的位置,恢复为空地
}
}
// 主函数
int main() {
Position start = {0, 0}; // 起点(例如左上角)
rat_in_maze(start);
return 0;
}
```
请注意,这个代码假设迷宫的出口标记为2,迷宫起始点为(0, 0),并且出口总是在迷宫的右下角。实际编写时,你需要将迷宫矩阵、起始点和出口规则替换为你需要的具体情况。
阅读全文