我的一位朋友被问到这个问题接受采访,当时无法解决。以为我会分享同样的。
有一千个巧克力饼干,其中一个中毒。您 每天可以接触10只实验室老鼠。每只老鼠都可以啃食任何数字 饼干和每个饼干可以被任何数量的老鼠啃食。后 一只老鼠啃着一个有毒的饼干,需要一天的时间才能看到它 如果它被中毒,对大鼠有影响。
优化天数。我能够在2天内找到一个算法来找到中毒的cookie,虽然我相信在1天内有一种方法可以做到这一点
答案 0 :(得分:7)
这是三天内的“简单”解决方案:
现在为一天的“硬”解决方案:
答案 1 :(得分:3)
我想我明白了。
想象一下以1024个cookie作为根的二叉树(这个数字更干净,但这适用于任何小于1024的数字)。将1024个cookie分成两组,每组512个,每个组都是root的子组。然后将512个这些组中的每个组分成256个组,让它们成为每个组的子组,依此类推。你最终应该得到11个级别的树。
将每只大鼠分配到除根之外的树的级别。每只老鼠只吃它们水平左侧分支上的饼干。第二天,遍历树和每只死亡的老鼠,按照左分支,对于每只活着的老鼠,按照右分支。生成的cookie应该是有毒的。