21-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 pathif A(i,j) == 3 % A(i,j) = 3;if ii < minpathminpath = ii;path = vis;endfprintf('found: %d\n', ii); % A = num2str(A) % vis = num2str(vis)return ;end % if ii > 200 % return % endfor xi = 1:4x = i + dx(xi);y = j + dy(xi);if x >= 1 && x <= 16 && y >= 1 && y <= 16 && A(x,y) ~= 1 && vis(x,y) == 0vis(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;endendend
轉載于:https://www.cnblogs.com/zhumengdexiaobai/p/10739611.html
總結
以上是生活随笔為你收集整理的21-matlab 迷宫题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ReentrantLock之公平锁源码分
- 下一篇: Thread和Runnable的区别