试毒水(阿里巴巴腾讯搜狐笔试智力题)

问题描述:

例1:(阿里巴巴)有16瓶水,其中有一瓶有毒,小白鼠喝一滴水之后一个小时会死,请问至少用几只小白鼠,在1小时内一定可以找出至少14瓶无毒的水?

分析:将16瓶水分别标号为1~16,2瓶为一组,分为8组。A1为第1,2瓶水以此类推,A8为第15,16瓶水。

      小白鼠1喝:A1, A4, A5, A7
      小白鼠2喝:A2, A4, A6, A7
      小白鼠3喝:A3, A5, A6, A7

1小时后~
      小白鼠1死:      A1组有毒
      小白鼠2死:      A2组有毒
      小白鼠3死:      A3组有毒
      小白鼠1,2死:     A4组有毒
      小白鼠2,3死:     A6组有毒
      小白鼠1,3死:     A5组有毒
      小白鼠1,2,3死:  A7组有毒
      都没死:            A8组有毒
答案:3只


例2:(腾讯)有1000瓶水,其中有一瓶有毒,小白鼠只要尝一滴24小时后就会死亡,至少需要多少只小白鼠才能在24小时内鉴别出那瓶水有毒?

分析:每个老鼠有死活两种状态分别为1,0。因此N个老鼠可以表达2^N种状态。
假设:有4瓶水A,B,C,D,1瓶有毒,设N=2,可以表达4种状态:
      1号老鼠喝A,B;2号老鼠喝B,C
24小时后~
      00:1号老鼠活,2号老鼠活。D有毒
      01:1号老鼠活,2号老鼠死。C有毒
      10:1号老鼠死,2号老鼠活。A有毒
      11:1,2号老鼠死。B有毒
同理:有1000瓶水,2^10=1024,N=10所以选10个小白鼠,一共可以表示1024个状态。
答案:10只


例3.(搜狐)8瓶酒有1瓶有毒,用人测试,每次测试结果8小时后才会得出,而你只有8个小时时间,问最少需要多少个人测试?
分析:M=8,所以N=3
答案:3个人


总结:有M种状态,则选N只小白鼠。此时:M<2^N

     有M瓶水,1瓶有毒,选N只小白鼠可以在规定时间内检测出哪一瓶水有毒。直接用技巧M<2^N

     像例1情况,有16瓶水,要求在规定时间内检测出14瓶无毒的。可以两瓶水分一组共8组。
     问题转换为:一共有8种状态,检测出哪一组检测出有毒,则剩余的组无毒。此时M=8,所以选3只小白鼠2^3=8

你可能感兴趣的:(笔试智力题)