欢迎光临散文网 会员登陆 & 注册

MATLAB小程序,随机生成迷宫

2023-03-27 14:17 作者:量子光子  | 我要投稿

以下是一个有趣的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迷宫,然后使用深度优先搜索算法寻找从左上角到右下角的路径,并将路径绘制为红色线条。运行程序时,您可以多次尝试,以便获得不同的迷宫和路径。

MATLAB小程序,随机生成迷宫的评论 (共 条)

分享到微博请遵守国家法律