一道笔试题

题目:8瓶酒一瓶有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。问最少需要(B)人测试?

分析过程:
1.假设有A、B、C、D、E、F、G、H8个人,分别测试1、2、3、4、5、6、7、8瓶酒,这时,需要8个人;
2.这时会问,可以减少测试人员吗?为什么可以?我们可能减少H,若A到G测试人员无人中毒,即说明编号8为毒酒,反之则对应的A到G中中毒的,即找到毒酒编号;
此时,测试方案为:
A:1 B:2 C:3 D:4 E:5 F:6 G:7 不测试:8
3.这7个人里面,有可以被替代的吗?若可以替代,如何替代?
 由A代替B去执行,此处假设A替代B,即A同时喝下编号为1和2的酒。那么,若A发生中毒,如何确定是编号为1或2的酒为毒酒呢?这就需要还有另外一个人喝下1或2,假设由C喝下2,则当A与C都中毒时,表示毒酒为编号2,若A或C中毒,则毒酒为1或3;
3.由此,我们知道,每两个人,可以鉴定3瓶酒,可以再省下两人,现在共需要5人。
 A:1,2
 C:2,3
 D:4,5
 F:5,6
 G:7
4.到此,是否还可以再省人呢?即,还有哪一个可被替代?从step3,发现编号为7的酒只有一个人试,是否可以分配给其它人呢?假设分给A,那么,当A发生中毒时,无法分清是由1还是由于7引发的中毒。因此,还需要增加一个人,如C。当A和C同时发生中毒时,还是无法分清是由2还是由7引发的中毒。我们再增加D,这时,只有当ACD同时中毒时,可以确定是编号7为毒酒。到此,可省下一人,现共需要4人。如下:
 A:1,2,7
 C:2,3,7
 D:4,5,7
 F:5,6
5.到此,我们再问一次,还可以再省人吗?若可以,哪一个是可以被替代的,如何替代?
我们发现,F的编号为5和6,是否可以被替代呢?D已经试了编号5,我们让A也试5,这时,若AD同时中毒(C未中毒,若C也中毒,由上面分配,ACD中毒,则7为毒酒),则毒酒为5,若只是A或D中毒,则毒酒编号为1或3为毒酒。

A:1,2,7,5
 C:2,3,7
 D:4,5,7
 F:6
我们再看F的编号6,能否通过A、C、D确定?已不能分给AC或ACD,因为AC确定了编号5为毒酒,ACD确定了编号为7为毒酒。那么就剩下C和D了,如下,当CD同时中毒时(A未中毒),可以确定编号6为毒酒,C或D中毒时,毒酒编号为3或4。
A:1,2,7,5
 C:2,3,7,6
 D:4,5,7,6
到此,我们可以再省下一人,现只需要3人即可。
6.我们再问一次,还可以再省人吗?若省D,AC原来已有重复编号为2,不能再区分新的酒;若省C,AD原来已有重复编号为5,不能再区分新的酒;若省A,CD原来已有重复编号6,不能再区分新的酒。到此,我们可以最终确定,至少需要三个人,才可测试出现哪一瓶是毒酒。
方案如下:
A:1,2,5,7
 C:2,3,6,7
 D:4,5,6,7

我们把上面的整理一下:
A中毒,CD中毒,=>1
C中毒,AD不中毒=>3
D中毒,AC不中毒=>4
AC中毒,D不中毒=>2
AD中毒,C不中毒=>5
CD中毒,A不中毒=>6
ACD中毒=>7
ACD不中毒=>8

我们发现,一共是8个状态,需要用到3个元素(ACD)去表示,而每个元素都有两种状态,即中毒或不中毒。
在二进制中,也是用三个bit,每个bit可以为0或1,共表示8种状态(数字0到7)。

000 => 0
001 => 1
010 => 2
011 => 3
100 => 4
101 => 5
110 => 6
111 => 7
也就是说,若A为第一位,C为第二位,D为第三位,还可以有下面的方案:
A: 4,5,6,7
C: 2, 3, 6, 7
D: 1, 3, 5, 7

此问题可以转换为,如何用最少的位数,表示8个状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值