我的一个朋友被问到这个问题接受采访,当时无法解决.以为我会分享同样的.
有一千个巧克力饼干,其中一个中毒.您每天可以使用10只实验室老鼠.每只老鼠都可以啃食任意数量的饼干,每个饼干都可以被任意数量的大鼠啃食.一只老鼠啃了一个有毒的饼干,如果它被中毒,它需要一天才能看到对大鼠的后遗症.
优化天数.我能够在2天内找到一个算法来找到中毒的cookie,虽然我相信有一种方法可以在1天内完成
这是三天内的"简单"解决方案:
现在为一天的"硬"解决方案:
我想我明白了。
想象一棵以 1024 个 cookie 作为根的二叉树(这个数字看起来更干净,但这适用于任何小于 1024 的数字)。将 1024 个 cookie 分成两组,每组 512 个,每组都是根的子项。然后将这些 512 个组中的每一个分成 256 个组,并让它们成为每个组的子代,依此类推。您最终应该得到 11 层树。
将每只老鼠分配到除根之外的树层。每只老鼠只会吃其所在级别左侧树枝上的饼干。第二天,遍历树,对于每只死去的老鼠,沿着左分支走,对于每只活着的老鼠,沿着右分支走。得到的饼干应该是有毒的。
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |