1000瓶药水,其中至多有1瓶剧毒,现在给你10只小狗在24小时内通过小狗试药的方式找出哪瓶药有毒或者全部无毒(小狗服完药20小时后才能判断是否中毒)

把狗从0-9编号
把药水按1-1000编号
把药水编号按二进制,如果第i位(因为最大1000,所以bit位为0-9)bit位为1,则分给编号为i的狗狗喝
最后得一二进制数,如果编号为i的狗狗死了,该数的第i bit位为1,该数就是有毒的药水编号

每2.4分钟给一只狗狗喝一瓶药,并记录,若有狗狗中毒,查看时间记录就知道哪瓶药有毒了

posted on 2011-10-02 14:04 メmarsメ 阅读(1168) 评论(2)  编辑 收藏 引用 所属分类: AL

评论

# re: 1000瓶药水,其中至多有1瓶剧毒,现在给你10只小狗在24小时内通过小狗试药的方式找出哪瓶药有毒或者全部无毒(小狗服完药20小时后才能判断是否中毒) 2011-10-04 17:01 o我爱罗o

思路是不是有点问题呢?
按照二进制编号没错,给每个狗编号0~9,给药水编号1~1000,把每瓶药水按照药水的二进制码,给相应位上的狗喝,到最后,根据死去的狗的位为1,活着的狗的位上为0,其所表示的数就是对应的有毒药水编号(因为只有一个,最多只有一个毒,所以只能有一个编号出来,不会重复的)
不可能还需要等2.4分钟再给的。。。

2^X-1 >= N
  回复  更多评论   

# re: 1000瓶药水,其中至多有1瓶剧毒,现在给你10只小狗在24小时内通过小狗试药的方式找出哪瓶药有毒或者全部无毒(小狗服完药20小时后才能判断是否中毒) 2011-10-06 14:27 メmarsメ

@o我爱罗o
两种思路  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜