马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 yinda_peng 于 2024-3-19 13:34 编辑
大概两三天之后会发布答案,如果有鱼油在此之前写出来了,将提前发布答案
写对的鱼油给予评分奖励(非会员优先评鱼币,会员优先评荣誉),不仅写对还给出清晰解答的鱼油将额外给予贡献评分奖励
希望大家尽量自己思考,一道题目,你看答案写和没看答案写是完全不同的感受
有三对夫妻要过河,船最多只能载两人,
由于旧时阿拉伯法律约束,封建思想严重,
要求女子不能在丈夫不在场时与其他男性共处,
如何安排三对夫妇过河?
(记得考虑划船,可以使用编程求解哦)
提示:按男女分类,编程可考虑状态转移
用向量(H,W)表示有H个男子,W个女子在起点,其中0<= H <= 3,0<= W <= 3.根据题意,一共有9个可取状态,它们是(0,0) , (0,1) , (0,2) , (0,3) , (3,1) , (3,2) , (3,3) , (1,1)和(2,2).定义运算向量为((-1)jm,(-1)jn),其中m,n = 0,1,2且1<=m+n<=2,j = 1,2,3…… 夫妻过河问题转化为:求由状态(3,3)经过奇数次运算转移到(0,0)的转移过程。 下面展示第一步运算过程:
第二步是将(3,2),(3,1),(2,2)分别于运算向量进行计算,如此下去,容易验证,经过11次取运算之后可以完成。
为了便于计算机编程求解,记允许状态集合和可取状态集合分别为: S = {(i,j)|i = 0,j = 0,1,2,3;j = 3,i = 0,1,2,3;i = j = 1,2}, D = {(m,n)|1<=m+n<=2,m,n = 0,1,2} 并用S1(m,n),S2(m,n),...(Sk属于S)表示状态的变化过程,dk(m,n)(dk属于D)表示状态Sk下的过河方案,当k为奇数时,dk表示从起点到对岸,当k为偶数时,表示从对岸到起点。状态转移满足下列关系: 于是问题归结为:求dk属于D(k = 1,2...)使(Sk属于S)状态按(2.5)式由初始状态S1(3,3)经n步转移到Sn(0,0)的最小值n值。根据上述思路,现在就容易实现在计算机上实现了,如果计算过程出现循环,代表无解。
|