matlab迷宫求解,21-matlab 迷宫题

dfs: 注意matlab里面的全局变量的使用

test.m:

clc;

clear;

global A ii dx dy vis minpath path

A=...

[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;

1 2 0 0 1 1 0 0 0 0 1 1 1 1 1 1;

1 0 1 0 0 0 0 1 1 0 0 0 1 1 1 1;

1 0 1 1 1 1 0 0 1 1 0 0 0 0 1 1;

1 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1;

1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1;

1 0 0 0 0 1 1 1 1 1 1 0 1 1 1 1;

1 0 1 0 0 1 1 0 0 0 0 0 1 1 1 1;

1 0 1 0 1 1 1 0 1 0 0 1 1 1 1 1;

1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1;

1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 1;

1 0 0 1 0 1 1 0 1 0 0 0 0 0 1 1;

1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 1;

1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1;

1 1 1 1 1 1 1 1 1 1 0 0 0 0 3 1;

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;

];

minpath = inf

dx = [1, -1, 0, 0];

dy = [0, 0, -1, 1];

vis = zeros(16,16);

disp(‘迷宫图‘)

% A

% A = num2str(A)%% 2为入口点(2,2), 3为出口为A(15,15)

ii = 0;

[xx, yy] = size(A);

visits(2,2);

disp(‘第一种走出迷宫图‘)

fprintf(‘最短路:%d‘, minpath);

path

ys = max(path, A)

% A = num2str(A)

visits.m:

function [i,j]=visits(i,j)

global A ii dx dy vis minpath path

if A(i,j) == 3

% A(i,j) = 3;

if ii < minpath

minpath = ii;

path = vis;

end

fprintf(‘found: %d\n‘, ii);

% A = num2str(A)

% vis = num2str(vis)

return ;

end

% if ii > 200

% return

% end

for xi = 1:4

x = i + dx(xi);

y = j + dy(xi);

if x >= 1 && x <= 16 && y >= 1 && y <= 16 && A(x,y) ~= 1 && vis(x,y) == 0

vis(x,y) = 8;

ii = ii + 1;

% t = A(x,y);

% A(x,y) = 8;

visits(x, y);

% A(x,y) = t;

ii = ii - 1;

vis(x,y) = 0;

end

end

end

原文:https://www.cnblogs.com/zhumengdexiaobai/p/10739611.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值