matlab走迷宫的代码
时间: 2023-08-23 11:08:47 浏览: 92
下面是一个简单的MATLAB代码示例,用于实现走迷宫的功能。这个示例使用了深度优先搜索算法来遍历迷宫,找到从起点到终点的路径。
```matlab
% 迷宫地图
maze = [
1 1 1 1 1 1 1 1 1 1;
1 0 0 1 0 0 0 1 0 1;
1 0 0 1 0 0 0 1 0 1;
1 0 0 0 0 1 1 0 0 1;
1 0 1 1 1 0 0 0 0 1;
1 0 0 0 1 0 0 0 0 1;
1 0 1 0 0 0 1 0 0 1;
1 0 1 1 1 0 1 1 0 1;
1 1 0 0 0 0 0 0 0 1;
1 1 1 1 1 1 1 1 1 1;
];
% 迷宫大小
mazeSize = size(maze);
% 起点和终点
start = [2,2];
goal = [mazeSize(1)-1, mazeSize(2)-1];
% 初始化标记数组
visited = zeros(mazeSize);
% 深度优先搜索函数
function success = dfs(maze, position, visited, goal)
% 获取当前位置
x = position(1);
y = position(2);
% 检查是否到达终点
if x == goal(1) && y == goal(2)
success = true;
return;
end
% 检查当前位置是否可行走
if maze(x, y) == 0 && visited(x, y) == 0
% 标记当前位置为已访问
visited(x, y) = 1;
% 递归搜索上、右、下、左四个方向
if dfs(maze, [x-1, y], visited, goal)
success = true;
return;
elseif dfs(maze, [x, y+1], visited, goal)
success = true;
return;
elseif dfs(maze, [x+1, y], visited, goal)
success = true;
return;
elseif dfs(maze, [x, y-1], visited, goal)
success = true;
return;
end
% 如果四个方向都无法到达终点,则回溯
visited(x, y) = 0;
end
success = false;
end
% 调用深度优先搜索函数
if dfs(maze, start, visited, goal)
disp('找到走出迷宫的路径!');
else
disp('无法找到走出迷宫的路径!');
end
```
这段代码使用了一个10x10的迷宫地图,其中1表示墙壁,0表示可以通过的路径。起点为(2,2),终点为(9,9)。你可以根据自己的需求修改迷宫地图、起点和终点的位置。如果找到了从起点到终点的路径,将会显示"找到走出迷宫的路径!",否则将会显示"无法找到走出迷宫的路径!"。
阅读全文