matlab解决迷宫问题,用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 A0 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值