黑马程序员技术交流社区

标题: 一个变态的面试题,好纠结的~~~ [打印本页]

作者: maralbertlee    时间: 2014-10-26 11:26
标题: 一个变态的面试题,好纠结的~~~
十三瓶饮料,其中一瓶有剧毒,人只要喝下(哪怕一小小滴),8小时之后(8小时内不会有任何问题)马上会死掉,请问最少多少人8小时后就能找出有毒的那瓶饮料?(提示:一个人可以喝多瓶饮料,必须全部测完,写出具体分析过程。)
作者: 菜鸟小6    时间: 2014-10-26 12:17
真的好变态,我是这么理解的
作者: 践行渐远    时间: 2014-10-26 12:24
这题目看着也是醉了
作者: 李运岚    时间: 2014-10-26 12:33
这题目看都 看不懂
作者: lyhwd2    时间: 2014-10-26 13:26
每两人确认三瓶 . 多出的一瓶不用测 . 也就是8人= =! 再高深的实在想不出了
作者: csf62615    时间: 2014-10-26 13:47
奇葩的题目
作者: 坏人卡    时间: 2014-10-26 14:02
13瓶,当每人喝7瓶时,重复6瓶饮料,需要最少6个人。
分析如下:
123   4  5   6   7
234   5  6   7   8
345   6  7   8   9
456   7  8   9  10
678   9 10 11 12
789 10 11 12
8 9 10 11 12
9 10 11 12
10 11 12
11 12
12

作者: lyhwd2    时间: 2014-10-26 14:09
睡了一觉 想到的..4人足够了..这题该加精!!!
作者: treanow    时间: 2014-10-26 14:15
额 这有点智力测验的感觉
作者: 十万一千    时间: 2014-10-26 15:34
最少要两个人吧,一人负责测试(因为他会死的)每隔一分钟喝下一瓶的一小小滴;一人负责记录,观察他是在八个小时后第几分钟死的。
作者: Eagle    时间: 2014-10-26 16:07
这是脑筋急转弯吗。。。。
1个人够了、同楼上所说方法。
每分钟喝一滴,需十三分钟。都把顺序记录下来。
八小时后,每过一分钟,在记录的本子上的相应瓶子打钩,没有勾到的那个。就是哪瓶。
应该能理解吧。。

作者: renchiyao    时间: 2014-10-26 16:18
Eagle 发表于 2014-10-26 16:07
这是脑筋急转弯吗。。。。
1个人够了、同楼上所说方法。
每分钟喝一滴,需十三分钟。都把顺序记录下来。

呵呵!正解啊!
作者: Doit    时间: 2014-10-26 16:28
黑马的面试题吗?
作者: Mr.Ni    时间: 2014-10-26 18:40
看到这种题目,我也是醉了。。。
作者: 康师傅-蛋黄派    时间: 2014-10-26 19:40
本帖最后由 康师傅-蛋黄派 于 2014-10-26 19:43 编辑

这题应该属于折中查找类型的:
1.第一个人和6瓶,如没死,则剩7瓶
2.第二个人喝3瓶,如没死,则剩4瓶
3.第三个人喝2瓶,如没死,则剩2瓶
4.第四个人喝1瓶,如没死,则剩1瓶
共4个人,不知道分析的对不对,题目中说必须全部测完的意思是必须全部喝一遍还是什么有其他的意思?

作者: winkyqin    时间: 2014-10-26 19:51
确实很变态!
作者: qinjingbo    时间: 2014-10-26 19:57
额??头晕。
作者: weiyi    时间: 2014-10-26 20:31
十万一千 发表于 2014-10-26 15:34
最少要两个人吧,一人负责测试(因为他会死的)每隔一分钟喝下一瓶的一小小滴;一人负责记录,观察他是在八 ...

要看清题目啊“8小时后就能找出有毒的那瓶饮料”,你只看到了最少多少人,没看到有时间限制呢
作者: lyhwd2    时间: 2014-10-26 21:09
:dizzy::dizzy::dizzy::dizzy: 能加分不

IMG_1955.JPG (117.88 KB, 下载次数: 120)

IMG_1955.JPG

作者: void    时间: 2014-10-26 21:31
饮料:1  2  3  4  5  6  7  8  9  10  11  12
作者: void    时间: 2014-10-26 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瓶需要几个小白鼠?)
作者: wanmei0398    时间: 2014-10-26 22:47
真心醉了。难道我合适。。。
作者: 千里马    时间: 2014-10-26 23:12
这题目还真的很考逻辑思维能力!
作者: 十万一千    时间: 2014-10-27 00:07
本帖最后由 十万一千 于 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
好像第一个正确答案就是21楼了  坐等高手出第二种方法:victory:
作者: 戏言丶    时间: 2014-10-27 08:10
居然用人做实验,还要得到正确答案,这不是要死人的节奏么,,,
作者: 菜鸟一号    时间: 2014-10-27 09:27
十万一千 发表于 2014-10-26 15:34
最少要两个人吧,一人负责测试(因为他会死的)每隔一分钟喝下一瓶的一小小滴;一人负责记录,观察他是在八 ...

10#的应该是正解吧:D
作者: new999    时间: 2014-10-27 09:42
二分查找,要4人。不过,题目叙述不严谨,1人足矣
作者: 十万一千    时间: 2014-10-27 10:06
菜鸟一号 发表于 2014-10-27 09:27
10#的应该是正解吧

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

请转24楼。。。
作者: 康师傅-蛋黄派    时间: 2014-10-27 10:46
void 发表于 2014-10-26 22:21 1. 给每瓶水饮料编号1--12, 2. 给4个人编号1--4 3. 把瓶的编号用4位二进制表示,如6表示为0110

按你这么说,1000瓶是用10个人不
作者: 空洞的望着窗外    时间: 2014-10-27 11:29
如果是8小时之后马上死掉的话,给13瓶药标号1~13,那么一个人就每隔10分钟喝一瓶,过8小时,他就知道自己怎么死的了。
作者: 空洞的望着窗外    时间: 2014-10-27 11:39
空洞的望着窗外 发表于 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:59
空洞的望着窗外 发表于 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
康师傅-蛋黄派 发表于 2014-10-27 10:46
按你这么说,1000瓶是用10个人不

是的,那么问题就来了,什么规律呢?
作者: 康师傅-蛋黄派    时间: 2014-10-27 13:11
void 发表于 2014-10-27 13:04
是的,那么问题就来了,什么规律呢?

很简单,找最大的数就可以了,1000用二进制表示就是1111101000,10位的二进制数就是10个人喽。楼主的13是1101共4位,就是4个人。
作者: 嘿~~    时间: 2014-10-27 14:27
void 发表于 2014-10-26 22:21
1.   给每瓶水饮料编号1--12,
2.   给4个人编号1--4
3.   把瓶的编号用4位二进制表示,如6表示为0110

牛逼,学习了
作者: 郑飞    时间: 2014-10-27 15:17
这帖子为啥被下沉了啊
作者: chenglove1201    时间: 2014-10-27 19:30
给大家个方法,数学上的排列组合就能算出来了,3个人最多能测出3+3+1=7瓶来,4个人最多能测出4+6+4+1=15瓶来,所以最少需要4个人;当1000瓶时,9个人最多能测出511瓶来,10个人最多能测出1004瓶,所以最少需要10个人
作者: 坚持525    时间: 2014-10-27 19:59
楼主,这是黑马的面试题吗?这上水平了,
作者: treanow    时间: 2014-10-27 20:48
看了楼上好几个大神的回复,还是理解了一些,学习了。!!
作者: maralbertlee    时间: 2014-10-31 14:25
void 发表于 2014-10-26 22:21
1.   给每瓶水饮料编号1--12,
2.   给4个人编号1--4
3.   把瓶的编号用4位二进制表示,如6表示为0110

正解,赞!
作者: Carter    时间: 2014-10-31 15:48
表示真的醉了
作者: 执着的桶牛    时间: 2014-10-31 23:22
看了推荐  豁然开朗  感觉再也不怕这种题了!
作者: noiary    时间: 2014-11-1 00:52
甭算了

1个人喝8瓶,间隔2分钟,8小时后计时。。。
作者: 烟默year    时间: 2014-11-1 01:03
不忍直视!!!!
作者: 苏浩    时间: 2014-11-1 02:07
晕掉晕掉了。。。
作者: 黄宽    时间: 2014-11-1 15:48
void 发表于 2014-10-26 22:21
1.   给每瓶水饮料编号1--12,
2.   给4个人编号1--4
3.   把瓶的编号用4位二进制表示,如6表示为0110

有道理,学习了啊 :)
作者: wanmei0398    时间: 2014-11-1 16:21
一开始就蒙了啊
作者: 苑桥别馆    时间: 2014-11-1 17:45
表示看不懂
作者: 苑桥别馆    时间: 2014-11-1 18:08
一楼回答正确
作者: falonsokaka914    时间: 2014-11-1 18:27
额, 这题太变态了,表示不会,没有思路
作者: falonsokaka914    时间: 2014-11-1 18:29
想想也是醉了,太变态了
作者: shileishihai    时间: 2014-11-1 18:34
学习了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2