【智力题】:毒酒问题

有十杯酒,其中一杯有毒,现在要使用尽可能少的鸭子数量去找出哪杯酒有毒,已知毒性在一天之后才能发作,并且一天之后就要得到结果,问最少需要几只鸭子?

 十杯酒,对应的二进制编码为1010,共四位,所以最少需要四只鸭子即可

分析过程:

 第一步:对十杯酒编号                                                                          

                                                                                                                                                     

第二步:对四只鸭子进行编号

                                                                                                                                                            表二

鸭子编号                           对应的二进制编号
0001
0010
0100
1000

第三步: 二进制编号的鸭子去喝二进制编号对应位为1的酒杯,即让鸭子的二进制编号与酒杯的二进制编号做与运算,若结果等于1,则让这一只鸭子喝掉这一杯酒。

eg:     

鸭子①:   0001    &  酒杯1 :0001==1   喝掉

鸭子①:   0001    &  酒杯2:   0010==0   不喝

鸭子①:   0001    &  酒杯3:   0011==1    喝掉

鸭子①:   0001    &  酒杯4:   0100==0    不喝

鸭子①:   0001    &  酒杯5:   0101==1    喝掉

鸭子①:   0001    &  酒杯6:   0110==0    不喝

鸭子①:   0001    &  酒杯7:   0111==1    喝掉

鸭子①:   0001    &  酒杯8:   1000==0   不喝

鸭子①:   0001    &  酒杯9:   1001==1    喝掉

鸭子①:   0001    & 酒杯10:  1010==1    不喝

∴鸭子要喝掉   酒杯1,酒杯3,酒杯5,酒杯7,酒杯9

即鸭子①要喝掉表一中蓝色这一列中位为1 的酒杯

同理可得:

鸭子②喝掉黄色这一列中位为1 的酒杯

鸭子③喝掉绿色这一列中位为1 的酒杯

鸭子④喝掉红色这一列中位为1 的酒杯

                                                                                                                                                     表三

酒杯编号                       鸭子
酒杯1①    
酒杯2②   
酒杯3①    ②
酒杯4
酒杯5①    ③
酒杯6②   ④
酒杯7①    ②    ③
酒杯8
酒杯9①  ④
酒杯10②   ④

第四步:观察第二天鸭子的状态,查表三,得结论

eg:

只有鸭子①挂掉,其他的鸭子无恙,则说明酒杯1有毒

只有鸭子① ② ③三只挂掉,气的鸭子无恙,则说明酒杯7有毒

·······

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值