有关老鼠与毒酒的一道面试智力题的答案与思考

版权声明:如若转载此处提到的问题及标准答案不用注明此贴地址,否则,请将本帖地址注明!

=========================================================================

问题描述:有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。

现在我们用小老鼠做实验,要在1周后找出那桶毒酒,问最少需要多少老鼠。

====================================================================================
1、先给出标准答案
10只老鼠按顺序排好每桶酒按照编号转换成二进制,给相应位置上是1的老鼠喝。最后按死掉的老鼠
是哪几只,然后排成二进制,再转成十进制就是第几桶酒。

2、有趣的思考

我看到此题后思考给出的结果是:将每个桶装进一个正方体盒子里,把所有的盒子摆成一个大的立方体,

依此立方体建立(三维)空间坐标系,x,y,z轴上分别放10只老鼠,共计30只,即可解决。

方法是,每只老鼠要喝垂直于自己所在坐标轴的平面上的所有酒。这样,x,y,z上的每3个老鼠定位空

间中一点,即一瓶酒。最终,有3只老鼠会死亡。他们确定了哪瓶酒是有毒的。其中最优性的证明就是

一个3个变量的均值定理。


而最开始,是我的室友和我提到的这个问题。他说这个题有个明显的上界,1000只老鼠肯定行。我说是,

但他得说法提醒我想到了分组:分成2组,拿两只老鼠,分别喝其中一组的所有酒,在拿每组中所拥有的

酒的个数只老鼠,每只老鼠,喝各组里1瓶,最终必然有2只老鼠死亡。推广之,设n瓶酒分为x分,则共需

老鼠只,

后来我发现这个有点类似于二维数组,并利用均值定理。后来我想可不可以推广到三维,从而减少老鼠数量,

进而有了上边三维的答案。可以证明10,10,10是三维空间最佳的结果,即共30只。后来我又想,其实室友开始

说的上界就是一个1维的情况。从1维到2维,再到3维,会不会高纬会更进一步的降低老鼠数量呢?我和室友

没能讨论出进一步的结果。

第二天,我从网上搜到别人给出的二进制解法,显然,这是个明显的计算机背景解法。我觉得这个二进制解法中

存在着一个高维对应,但我不知道这种想法,或叫猜测对不对。我对高维空间不了解,就只能思考到这了。


ps:后来我发现并不是对于所有的酒桶个数,都是越高维越优的。比如,只有2瓶酒的情况,显然二维不如1维的方法。

将这个问题及思考的过程记下来,以备后用!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
.版本 2 .如果真 (ItemID = 3020193) item.Name = “[魂玉]过关斩将” item.Color = Color_4 返回 (item) .如果真结束 .如果真 (ItemID = 3020185) item.Name = “[魂玉]七星夺窍” item.Color = Color_4 返回 (item) .如果真结束 .如果真 (ItemID = 3020188) item.Name = “[魂玉]五情七灭阵” item.Color = Color_4 返回 (item) .如果真结束 .如果真 (ItemID = 3020187) item.Name = “[魂玉]捅劲” item.Color = Color_3 返回 (item) .如果真结束 .如果真 (ItemID = 3020183) item.Name = “[魂玉]乾坤日月斩” item.Color = Color_4 返回 (item) .如果真结束 .如果真 (ItemID = 3020179) item.Name = “[魂玉]分水斩” item.Color = Color_3 返回 (item) .如果真结束 .如果真 (ItemID = 3020181) item.Name = “[魂玉]铁马残红” item.Color = Color_3 返回 (item) .如果真结束 .如果真 (ItemID = 3020180) item.Name = “[魂玉]夺魂·双刀” item.Color = Color_3 返回 (item) .如果真结束 .如果真 (ItemID = 3020173) item.Name = “[魂玉]强袭·离火式” item.Color = Color_4 返回 (item) .如果真结束 .如果真 (ItemID = 3020182) item.Name = “[魂玉]易武·万华” item.Color = Color_4 返回 (item) .如果真结束 .如果真 (ItemID = 3020174) item.Name = “[魂玉]五毒酒” item.Color = Color_3 返回 (item) .如果真结束 .如果真 (ItemID = 3020163) item.Name = “[魂玉]流星飞坠” item.Color = Color_3 返回 (item) .如果真结束 .如果真 (ItemID = 3005005) item.Name = “[装备]红甲” item.Color = #红色 返回 (item) .如果真结束 .如果真 (ItemID = 3010053) item.Name = “[道具]锻造锤” item.Color = Color_4 返回 (item)翻译成c++ if源码
最新发布
05-24
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值