用matlab处理蚂蚁迷宫问题

蚂蚁走迷宫

现实生活中,工蚁每天需要为蚁巢寻找食物,但是寻找的过程可能并不是一帆风顺的。它可能经过重重障碍才能找到一份食物运回蚁巢。下面请你用matlab来模拟这个寻食的过程,请看下面的矩阵,假设A点是觅食起点,B点是食物的位置,‘1’代表不能走的位置,即障碍,‘0’代表可以走的路。

1. 显示矩阵

2. 能够使用程序自动的找到一条到出口的路线

3. 能使用程序一次性找到三条到出口的路线

4. 能够使用程序得知每条路线的长度

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

1 A 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

先是打印矩阵,因为要打印路线,所以有字符型的元素*,所以在输入A的矩阵之后,要将矩阵由数组型转换为字符型的矩阵,然后字符型的矩阵的空格(两个元素之间)是为两个长度,所以这就是后面的j+3和j-3的原因,然后行之间是没有这样的,判断某个路是否能走的条件的设立就是,判断它的四个方向的元素有没有没0的,如果有,则在这里打印个*,然后继续往下面递归,思想就是这样的,下面献上代码


function [i,j]=visits(i,j)
global A ii
   Alo=[A(i+1,j)=='0',A(i,j+3)=='0',A(i,j-3)=='0',A(i-1,j)=='0'];
   if(Alo(1)==1)
       i=i+1;
   elseif(Alo(2)==1)
       j=j+3;
   elseif(Alo(3)==1)
        j=j-3;
   else
       j=j+3;
   end
   A(i,j)='*';
   ii=ii+1;
   if(i~=15||j~=43)
       [i,j]=visits(i,j);
   end
end



clc;clear;
global A ii
A=...
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;
1 3 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 2 1;
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;
];
disp('迷宫图')
A=num2str(A)%% 2为出口点(2,4) 3为起始点A(15,43)
B=A;
%% 第一种
ii=1;
visits(2,4);
disp('第一种走出迷宫图')
A
    原文作者:迷宫问题
    原文地址: https://blog.csdn.net/YiMo_Fan/article/details/70857695
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞