人猫鸡米过河c语言算法,人猫鸡米过河问题.doc

本文通过穷举法和图解法解决了一个经典的逻辑谜题——人猫鸡米如何安全过河而不违反特定规则。文章详细描述了状态转移过程,并通过数学模型找到了最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重 庆 交 通 大 学

学 生 实 验 报 告

实验课程名称 数学

开课实验室

学 院 院 级 专业班 班

学 生 姓 名 学 号

开 课 时 间 201 至 201 学年第 学期

综合评分依据实验到课情况

表述的清晰度和结构的完整性

模型求解方法的正确性

建模的创新性实验指导教师官礼和

1不等于0;

因为

只有人会划船,且人至多只能带一种东西在船上

所以

b1=1,

b1+b2+b3+b4<=2

用穷举法求出所有满足以上条件的x

A(0,0,0,0),F(1,1,1,1),

B(0,1,0,1),G(1,0,1,0),

C(0,0,0,1),H(1,1,1,0),

D(1,0,1,1),I(0,1,0,0),

E(1,1,0,1),J(0,0,1,0);

其中(0,0,0,0)为初始状态,(1,1,1,1)为目标状态

满足条件的y

(1,0,0,0),(1,1,0,0),(1,0,1,0),(1,0,0,1)

通过x与y向量的运算,使x由初始状态A(0,0,0,0)

通过

允许状态

B(0,1,0,1),G(1,0,1,0),

C(0,0,0,1),H(1,1,1,0),

D(1,0,1,1),I(0,1,0,0),

E(1,1,0,1),J(0,0,1,0)

达到

目标状态F(1,1,1,1)

(5) 模型的求解

运算法则:

人猫鸡米如果通过一次转移之后都将到达对岸,通过两次转移后都将回到原来的位置,先忽略其它元素,以猫a2代替x,b2代替y为例:

很明显,初始a2=0,b2=0;

当b2=1时通过运算a2=a2+b2=1,即0+1=1通过一次转移猫到达彼岸

再次进行b2=1,a2=a2+b2,则猫又回到此岸,这时按照假设,a2等于0,所以1+1等于0 ;

而当b2=0时,即猫不被转移,

所以原来a2的值不变, 即0+0=0,1+0=1;

(!!!以上的“=”理解为赋值运算)

综上:

在向量a、b的运算中,1+1=0,1+0=1,0+1=1,0+0=0

即为异或运算;

初始状态A(0,0,0,0)通过与y(1,0,0,0),(1,1,0,0),(1,0,1,0),(1,0,0,1)

四种状态的运算,可达到

B(0,1,0,1),G(1,0,1,0),

C(0,0,0,1),H(1,1,1,0),

D(1,0,1,1),I(0,1,0,0),

E(1,1,0,1),J(0,0,1,0)

F(1,1,1,1);

因为

要使渡河次数尽量少;

所以

为了避免重复,

在选择渡河途中达到状态每种不同的状态只选择一次。

得到如下图:

图示说明:

初始状态

彼岸:什么都没有

经过->人与鸡坐船过河

->彼岸:人与鸡

经过->人划船返回此岸

->彼岸:鸡

此时分为两种情况:

第一种: (第二种:

经过->人与猫坐船过河 (经过->人与米坐船过河

->彼岸:人猫鸡 (->彼岸:人鸡米

经过->人与鸡坐船回到此岸 (经过->人与鸡坐船回到此岸

->彼岸:猫 (->彼岸:米

经过->人带米划船过河 (经过->人带猫划船过河

->彼岸:人猫米 (->彼岸:人猫米

最后

经过->人划船回到此岸

->彼岸:猫米

经过->人与鸡坐船渡河

->彼岸:人猫鸡米

(6) 模型评价及推广

在模型中用了穷举法找出所有的可行的状态,用了图解法找出了最优渡河方案(详见模型求解),还算比较容易理解,适合中小学生建模(由于本人数学建模根基浅薄,无奈选此题目,谅解谅解),要说推广的话,可以用于类似智力游戏的推理,锻炼逻辑思维。

(7) 参考文献

[1] 姜启源,谢金星,叶俊 《数学模型》,北京市西城区德外大街4号:高等教育出版社,1987年4月第1版。

[2] 565liu,人猫鸡米过河问题,

/link?url=oSzJEOAlO_GGAe6pb2VKMI1Hlmyc3LbOClFttRIE3Lf8jP30Mlzkom_EWCVWISOBkvhrs0anZPL11AE8pZZeglz9omc6iWv0hBkRyOMkOXS,2014年6月1日

(8) 程序和附件

4

图示:人猫鸡米状态转移过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值