黑马程序员技术交流社区

标题: 我来提一个我们老师曾给我们提的一个面试题。 [打印本页]

作者: maralbertlee    时间: 2014-10-25 12:17
标题: 我来提一个我们老师曾给我们提的一个面试题。
十三瓶饮料,其中一瓶有剧毒,人只要喝下(哪怕一小小滴),8小时之后(8小时内不会有任何问题)马上会死掉,请问最少多少人8小时后就能找出有毒的那瓶饮料?(提示:一个人可以喝多瓶饮料,必须全部测完,写出具体分析过程。)
作者: 紫薰iy    时间: 2014-10-25 12:39
4个人就好了。是这样吗?
作者: qq8921310    时间: 2014-10-25 13:32
我也觉得是4个人,
作者: ︶ㄣ你眼中的倒    时间: 2014-10-25 20:27
本帖最后由 ︶ㄣ你眼中的倒 于 2014-10-25 21:17 编辑

分为2分,    13分为  6,7。派个一人去喝六瓶的,如果有一个人死了,再从六瓶饮料去找,(反之一样)说明六瓶里有一瓶饮料有毒!再将六瓶饮料分为两份,3,3。再派一个人去喝,如果死了,再分析三瓶需要几个人,很简单,三瓶需要两个人,1+1+2=4至少需要四个人,仅供产考!,(反之一样)
作者: 潘杰    时间: 2014-10-25 21:34
我之前看过一道类似的题是小白鼠喝毒药,这道题直接毒死人了...
作者: 紫薰iy    时间: 2014-10-25 22:07
︶ㄣ你眼中的倒 发表于 2014-10-25 20:27
分为2分,    13分为  6,7。派个一人去喝六瓶的,如果有一个人死了,再从六瓶饮料去找,(反之一样)说明六 ...

你也看看 你这需要多长时间,最短的时间里。这样不行的
作者: 紫薰iy    时间: 2014-10-25 22:08
潘杰 发表于 2014-10-25 21:34
我之前看过一道类似的题是小白鼠喝毒药,这道题直接毒死人了...

我也看过,是1000瓶有一瓶有毒。和这题相似,不过使用小白鼠
作者: ︶ㄣ你眼中的倒    时间: 2014-10-25 22:38
紫薰iy 发表于 2014-10-25 22:07
你也看看 你这需要多长时间,最短的时间里。这样不行的

不需要人试,人命关天,用小白鼠试就行!零个人!
作者: 刘峻池    时间: 2014-10-25 23:16
好邪恶的面试题啊~~
作者: csf62615    时间: 2014-10-25 23:18
好残忍的面试题 不过我还是认真思考了一下
作者: maralbertlee    时间: 2014-10-26 10:32
qq8921310 发表于 2014-10-25 13:32
我也觉得是4个人,

没错,是4个人
作者: ︶ㄣ你眼中的倒    时间: 2014-10-26 15:20
又重新想了下,这道题其实是高中的排练组合问题,应该这样想,一共有13瓶饮料,至少应该几个人呢?他们喝的饮料一定有交集,设至少要有x个人,本质就是(有一个人喝一瓶的,有两个人喝一瓶的,有三个人喝一瓶的,有四个人喝一瓶的,有x个人喝一瓶的,从x个人中随意选一个人,随意选两个人,随意选三个人,随意选4个,随意选x个人)(这样可以避免重复确保了唯一性,选出来的组合只喝一瓶);一共才是13瓶,所以C(x,1)+C(x,2)+C(x,3)+C(x,4)+...C(x,x)=13,这样就转变为求x的最小值!所以可得x最小值是4,其实4个人可以鉴定15瓶!
作者: maralbertlee    时间: 2014-10-26 15:39
︶ㄣ你眼中的倒 发表于 2014-10-26 15:20
又重新想了下,这道题其实是高中的排练组合问题,应该这样想,一共有13瓶饮料,至少应该几个人呢?他们喝的 ...

不远了,不过有种方法是可以都测完的
作者: 孔子骑黑马    时间: 2014-10-26 16:21
4个人。
思路:将13瓶饮料用二进制进行编号,即从0001(1)到1101(13)。找4只老鼠,每只喝二进制值对应位上为1的饮料。哪只老鼠死了,就表明该饮料在该位上为1.这样就可找出饮料的二进制值,也就是间接找到了该饮料。

通解就是: 2^4=16,至少要4个。
作者: 十万一千    时间: 2014-10-27 00:15
4个对不。。。http://bbs.itheima.com/thread-150143-2-1.html
作者: ︶ㄣ你眼中的倒    时间: 2014-10-27 07:53
maralbertlee 发表于 2014-10-26 15:39
不远了,不过有种方法是可以都测完的

方法也不一定是一两种,还有很多!如果从生物角度来说元素跟踪也可以!各有各的思路!
作者: zhappy    时间: 2014-10-27 08:10
这是面试题吗?需要写出代码吗?
作者: ll_shitou    时间: 2014-10-27 09:12
孔子骑黑马的方式是对的,思路很好
作者: maralbertlee    时间: 2014-10-27 09:59
zhappy 发表于 2014-10-27 08:10
这是面试题吗?需要写出代码吗?

不用写代码,有思路就OK了
作者: maralbertlee    时间: 2014-10-27 10:00
十万一千 发表于 2014-10-27 00:15
4个对不。。。http://bbs.itheima.com/thread-150143-2-1.html

是4个,没错
作者: maralbertlee    时间: 2014-10-31 14:29
我来给出最终解法,不过据说还有一种,还请同学们加油!
解法如下:
13的二进制数为1011,则只需要4个人即可。
1、        将4个人分别编号1,2,3,4,将瓶子也从1依次编号
2、        将瓶子的编号转换为二进制数,但都保持有四位数,即1的二进制为0001,2的是0010……
3、        将二进制编号位数从前到后,由1到4依次排号
4、        分析二进制数,如果二进制数中的第一位为1则给编号为1的人喝下,如果第1位和第3位为1,则给编号为1和编号为3的人喝下……以此类推,直到喝完全部饮料
5、        判断8小时后死亡人数以及对应编号,如编号1,3,4的人死掉,则是二进制编号为1011,即13号饮料有毒,同理,如编号2,4的人死掉,则是二进制编号为0101,即5号饮料有毒。





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