1000瓶水

面试遇到一个问题:1000瓶水的问题

问:1000瓶水,一个小白鼠喝一点带毒的水7天后就会死亡,呢么至少多少只小白鼠会在7天后可以检测出带毒的水。

答案:

其实就相当于2**n > 1000,求解n是多少?

比如说每个老鼠都有死或者活两种状态,因此每个老鼠可以看作一个bit,取0或者1

N个老鼠可以看作N个bit,可以表达2**N个状态(其中第i个状态代表第i个瓶子有毒)

例如:当N=2时,可以存在四种状态

0,0(一号老鼠活,二号老鼠活)

0,1(一号老鼠活,二号老鼠死)

1,0(一号老鼠死,二号老鼠活)

1,1(一号老鼠死,二号老鼠死)

具体来说,有A、B、C、D这四个瓶子,一号老鼠喝A和B,二号老鼠喝B喝C

如果0,0,说明D有毒,第0个状态代表第4个瓶子

如果0,1,说明C有毒,第1个状态代表第3个瓶子

如果1,0,说明A有毒,第2个状态代表第1个瓶子

如果1,1,说明B有毒,第4个状态代表第2个瓶子

所以2**n > 1000,n为10,也就是至少需要10个老鼠才能在7天內确认哪个有毒。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值