Algorithm 优化查找有毒饼干的天数
我的一个朋友在面试时被问到这个问题,但当时无法解决。我想我也会和你一样 有一千块巧克力饼干,其中一块中毒了。你 每天可以接触10只实验鼠。每只老鼠可以啃任何数字 每一块饼干都可以被任意数量的老鼠吃掉。之后 一只老鼠啃着一块有毒的饼干,一天之后才能看到它 中毒对大鼠的影响 优化天数。我能够想出一个算法,在2天内找到有毒的饼干,尽管我相信有一种方法可以在1天内找到它 想象一个以1024个cookies作为根的二叉树(这个数字比较干净,但对于小于1024的任何数字都有效)。将1024个cookie分成两组,每组512个,每个组都是根的子级。然后将512个组中的每一个分成256个组,让这些组成为每个组的子组,依此类推。你应该得到11个层次的树 将每只老鼠分配到树的某个级别(根除外)。每只老鼠只吃他们水平线左边树枝上的饼干。第二天,在树上迭代,对于每只死去的老鼠,按照左分支,对于每只活着的老鼠,按照右分支。产生的曲奇应该是中毒的曲奇。这是三天内的“简单”解决方案:Algorithm 优化查找有毒饼干的天数,algorithm,Algorithm,我的一个朋友在面试时被问到这个问题,但当时无法解决。我想我也会和你一样 有一千块巧克力饼干,其中一块中毒了。你 每天可以接触10只实验鼠。每只老鼠可以啃任何数字 每一块饼干都可以被任意数量的老鼠吃掉。之后 一只老鼠啃着一块有毒的饼干,一天之后才能看到它 中毒对大鼠的影响 优化天数。我能够想出一个算法,在2天内找到有毒的饼干,尽管我相信有一种方法可以在1天内找到它 想象一个以1024个cookies作为根的二叉树(这个数字比较干净,但对于小于1024的任何数字都有效)。将1024个cookie分成
- 首先,让每只老鼠咬100块饼干
- 一天后,让每只老鼠啃食死老鼠吃的10块饼干
- 两天后,让每只老鼠吃掉第二只死老鼠吃的饼干
- 三天后,你就会知道哪块饼干中毒了
- 用二进制对所有cookie进行编号
- 每个rat都要啃食那些二进制表示在rat索引处有一个设定位的cookie。例如,老鼠1会吃掉所有奇数饼干
- 换句话说,饼干37会被老鼠1、3和6吃掉。所以如果第二天那三只老鼠死了,你就知道cookie 37是中毒的那只