MATLAB小程序,隨機(jī)生成迷宮
以下是一個有趣的MATLAB小程序,它可以繪制出一個隨機(jī)生成的迷宮,然后使用深度優(yōu)先搜索算法來尋找從起點(diǎn)到終點(diǎn)的路徑。您可以將該程序作為起點(diǎn),并根據(jù)自己的興趣和技能水平進(jìn)行修改和擴(kuò)展。

% 生成迷宮
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;
% 深度優(yōu)先搜索算法尋找路徑
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

該程序生成一個隨機(jī)的20x20迷宮,然后使用深度優(yōu)先搜索算法尋找從左上角到右下角的路徑,并將路徑繪制為紅色線條。運(yùn)行程序時,您可以多次嘗試,以便獲得不同的迷宮和路徑。