A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© maralbertlee   /  2014-10-26 11:26  /  3837 人查看  /  60 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

void 中级黑马 2014-10-26 22:21:22
21#
1.   给每瓶水饮料编号1--12,
2.   给4个人编号1--4
3.   把瓶的编号用4位二进制表示,如6表示为0110
4.   根据饮料编号的二进制表示给对应的人喝,如6(0110),编号为1、4的人不喝,编号为2.、3的喝
5.   8小时后人如果人死了,对应位置的值为1,如结果是只有1和3死,表示为1010,十进制为10,10号饮料有毒
(结果应该是4人,我们老师讲过,我们老师讲的是1000瓶水,用的不是人,是小白鼠,那1000瓶需要几个小白鼠?)

点评

这么算的话10个人也够了吧  发表于 2014-11-1 01:12
正解! 学习了  发表于 2014-10-26 22:32
回复 使用道具 举报 4 1
真心醉了。难道我合适。。。
回复 使用道具 举报
这题目还真的很考逻辑思维能力!
回复 使用道具 举报
本帖最后由 十万一千 于 2014-10-27 00:34 编辑
weiyi 发表于 2014-10-26 20:31
要看清题目啊“8小时后就能找出有毒的那瓶饮料”,你只看到了最少多少人,没看到有时间限制呢 ...

哦  看错了。  恩  既然是通过死人来确认剧毒饮料的来源,那么我们可以反向推导,通过死人的组合数来判定哪瓶是剧毒饮料。
有一个人验毒的死亡组合:
[A],
有两个人验毒的死亡组合:
[A],[B],[A, B],
有三个人验毒的死亡组合:
[A],[B],[C],[A, B],[A, C],[B, C],[A, B, C],
有四个人验毒的死亡组合:
[A],[B],[C],[D],[A, B],[A, C],[A, D],[B, C],[B, D],[C, D],[A, B, C],[A, B, D],[A, C, D],[B, C, D],[A, B, C, D],

可以看到,当我们有四个人的时候,死法组合数已经超过了13,所以用四个人最多可以完成15瓶剧毒饮料的鉴定工作。
具体步骤是  从这上面15种组合中任意挑选13组,给选出的13组组合和13支瓶子从1到13标号,然后每组人分别喝自己所在组标号对应标号瓶子的饮料(如:第五组[A, B], 就要求A,B 都喝第5支瓶子的饮料)等待8小时候后活着的人看死亡组合就可以判断出剧毒饮料是哪瓶了。如果没人幸存,应该就是第13瓶是剧毒饮料了,因为每个人都喝了第13瓶。

PS:如果我猜的没错的话,用4个人测试,最多可以有C(15,13)=105种方式完成对13瓶饮料的鉴定。

回复 使用道具 举报
郑飞 高级黑马 2014-10-27 00:40:39
25#
好像第一个正确答案就是21楼了  坐等高手出第二种方法:victory:
回复 使用道具 举报
居然用人做实验,还要得到正确答案,这不是要死人的节奏么,,,
回复 使用道具 举报
十万一千 发表于 2014-10-26 15:34
最少要两个人吧,一人负责测试(因为他会死的)每隔一分钟喝下一瓶的一小小滴;一人负责记录,观察他是在八 ...

10#的应该是正解吧:D
回复 使用道具 举报
new999 中级黑马 2014-10-27 09:42:41
28#
二分查找,要4人。不过,题目叙述不严谨,1人足矣
回复 使用道具 举报

第一次想错了,用这种方法的话  虽然人数两人可以判断出来 但是  不是在8小时候  而是8小时多几分钟  我在24楼有种解法  用4人的
回复 使用道具 举报
十万一千 发表于 2014-10-26 15:34
最少要两个人吧,一人负责测试(因为他会死的)每隔一分钟喝下一瓶的一小小滴;一人负责记录,观察他是在八 ...

请转24楼。。。
回复 使用道具 举报
康师傅-蛋黄派 来自手机 中级黑马 2014-10-27 10:46:58
31#
void 发表于 2014-10-26 22:21 1. 给每瓶水饮料编号1--12, 2. 给4个人编号1--4 3. 把瓶的编号用4位二进制表示,如6表示为0110

按你这么说,1000瓶是用10个人不
回复 使用道具 举报
如果是8小时之后马上死掉的话,给13瓶药标号1~13,那么一个人就每隔10分钟喝一瓶,过8小时,他就知道自己怎么死的了。
回复 使用道具 举报
空洞的望着窗外 发表于 2014-10-27 11:29
如果是8小时之后马上死掉的话,给13瓶药标号1~13,那么一个人就每隔10分钟喝一瓶,过8小时,他就知道自己怎 ...

如果是8小时之后死的话,那么先2个人喝,1喝1-6瓶,2喝8-13瓶,如果两人都没死,那就是7号有毒,如果8小时之后又人死了,dead=1,就知道是1-6出问题还是8-13出问题了,然后再在1-6或7-13中,再2分,以1-6为例,分1-3和4-6,肯定会死人,以1-3为例,dead=2,再2分,1、3,死人,dead=3,不死人就是2号瓶出问题。所以需要4个人。
回复 使用道具 举报
空洞的望着窗外 发表于 2014-10-27 11:39
如果是8小时之后死的话,那么先2个人喝,1喝1-6瓶,2喝8-13瓶,如果两人都没死,那就是7号有毒,如果8小 ...

还有就是2进制表示,1-0001、2-0010、3-0011~~~~~13-1101,用4个人,标号abcd,1就是喝,例如0001就是d喝,0010就是c喝,0011就是c和d一起喝,这样过8小时也看4人的同时死亡情况就知道了。
                                  abcd
回复 使用道具 举报
void 中级黑马 2014-10-27 13:04:11
35#
康师傅-蛋黄派 发表于 2014-10-27 10:46
按你这么说,1000瓶是用10个人不

是的,那么问题就来了,什么规律呢?
回复 使用道具 举报
void 发表于 2014-10-27 13:04
是的,那么问题就来了,什么规律呢?

很简单,找最大的数就可以了,1000用二进制表示就是1111101000,10位的二进制数就是10个人喽。楼主的13是1101共4位,就是4个人。
回复 使用道具 举报 1 0
void 发表于 2014-10-26 22:21
1.   给每瓶水饮料编号1--12,
2.   给4个人编号1--4
3.   把瓶的编号用4位二进制表示,如6表示为0110

牛逼,学习了
回复 使用道具 举报
郑飞 高级黑马 2014-10-27 15:17:35
38#
这帖子为啥被下沉了啊
回复 使用道具 举报
给大家个方法,数学上的排列组合就能算出来了,3个人最多能测出3+3+1=7瓶来,4个人最多能测出4+6+4+1=15瓶来,所以最少需要4个人;当1000瓶时,9个人最多能测出511瓶来,10个人最多能测出1004瓶,所以最少需要10个人
回复 使用道具 举报
楼主,这是黑马的面试题吗?这上水平了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马