一个有关农夫,狐狸,鸡,米过河的matlab程序
a0=[ 0 0 0 0];%左岸初态其中(农夫,狐狸,鸡,小米)
c0=[ 0 0 0 0];
d0=[ 0 0 0 0];
flag=0;
a1=[0 0 0 0];%右岸的状态
a2=[ 1 1 1 1];%表示左岸壮态
b=[1 1 0 0;1 0 1 0;1 0 0 1];
status=[0 0 0 0];
maxlter=100;
for i=1:100
for j=1:3
statusc=a2;
a2=a2-b(j,:);
if(a2==[0 0 0 0])
flag=1;
c0=[c0;b(j,:)];%来的状态
break;
end
statust=a2;
if(check(a2)==1)%检查左岸是否可行
a1=a1+b(j,:);
c0=[c0;b(j,:)];%来的状态
if(a1==[1 1 1 1])
flag=1;
break;
else
sta=a1;
a1=a1-[1 0 0 0];
if(check(a1)==1)%检查农夫一个人回去右岸是否可以
d0=[d0;[1 0 0 0]];%回去的状态
a2=a2+[1 0 0 0];
break;</