教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教学研究 >

农夫,狐狸,鸡,米的程序

来源:网络收集 时间:2026-02-03
导读: 一个有关农夫,狐狸,鸡,米过河的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=1

一个有关农夫,狐狸,鸡,米过河的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;
else %检查农夫一个人回去右岸是否可以
a1=sta;
for k=2:3 %如果不行,那他将带谁去;
a1=a1-b(k,:);
if(check(a1)==1)
d0=[d0;b(k,:)];%回去的状态
a2=a2+b(k,:);
break;
end
a1=a1+b(k,:);
end
end
end

end
if a2==statust
a2=statusc;
end

end
if(flag==1)
disp('划船从左岸去右岸1代表上船:')
disp('农夫 狐狸 鸡 小米')
c0(2:end,:)
disp('划船从右岸回左岸1代表上船:')
disp('农夫 狐狸 鸡 小米')
d0(2:end,:)
break;
end
end







function s=check(a)

r=find(a==1);
s=0;
x=0;%代表狐狸0不在,1在
y=0;%代表鸡0不在,1在
z=0;%代表小米0不在,1在
if length(find(a==1))==1&length(find(a>=0))==4
s=1;
end
for i=1:length(r)
if(r(i)==1)
s=1;
end
if(r(i)==2)
x=1; %代表狐狸
end
if(r(i)==3)
y=1;
end
if(r(i)==4)
z=1;
end
e
nd
if(y==0&x==1&z==1)
s=1;
end


划船从左岸去右岸1代表上船:
农夫 狐狸 鸡 小米

ans =

1 0 1 0
1 1 0 0
1 0 1

一个有关农夫,狐狸,鸡,米过河的matlab程序

0
1 0 0 1
1 0 1 0

划船从右岸回左岸1代表上船:
农夫 狐狸 鸡 小米

ans =

1 0 0 0
1 0 1 0
1 0 1 0
1 0 0 0

>>



农夫,狐狸,鸡,米的程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/50256.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)