以下是一个有趣的MATLAB小程序,它可以绘制出一个随机生成的迷宫,然后使用深度优先搜索算法来寻找从起点到终点的路径。您可以将该程序作为起点,并根据自己的兴趣和技能水平进行修改和扩展。
% 生成迷宫
M = zeros(20,20);
for i = 1:20
for j = 1:20
if rand < 0.3
M(i,j) = 1;
end
end
end
% 绘制迷宫
figure;
imagesc(M);
colormap(gray);
axis equal;
axis off;
% 深度优先搜索算法寻找路径
visited = zeros(20,20);
stack = [1,1];
path = [];
while ~isempty(stack)
current = stack(end,:);
stack(end,:) = [];
if current(1) == 20 && current(2) == 20
path = [path;current];
break;
end
if visited(current(1),current(2)) == 0 && M(current(1),current(2)) == 0
visited(current(1),current(2)) = 1;
path = [path;current];
neighbors = [current(1)-1,current(2);current(1),current(2)-1; current(1)+1,current(2);current(1),current(2)+1];
for i = 1:size(neighbors,1)
if neighbors(i,1) >= 1 && neighbors(i,1) <= 20 && neighbors(i,2) >= 1 && neighbors(i,2) <= 20
if visited(neighbors(i,1),neighbors(i,2)) == 0
stack = [stack;neighbors(i,:)];
end
end
end
end
end
% 绘制路径
hold on;
for i = 1:size(path,1)-1
plot([path(i,2),path(i+1,2)],[path(i,1),path(i+1,1)],'r','LineWidth',2);
end
该程序生成一个随机的20x20迷宫,然后使用深度优先搜索算法寻找从左上角到右下角的路径,并将路径绘制为红色线条。运行程序时,您可以多次尝试,以便获得不同的迷宫和路径。