大家好,这里是三岁,遇到了一个那难题,三岁渣渣做算法题,思路已有过程还在考虑,头一直秃
这是一个悲伤的故事,一天有人往8个杯子中的一个投了毒,已经知道毒药7天左右发作,现有3只小白鼠,有一个星期的时间,要得到哪一个杯子里面有毒
这题目真的和题目一有毒。
百度到了一个好结果:
把3只老鼠变成肉泥,然后等分成8份放进瓶子里,7天后查看有没有长蛆,没有的那个就是有毒的。
这个答案也是真的牛,只想问一句,你是秀儿吗?
思路
可以逐个排序
瓶子 | 老鼠 |
1号 | 第一只 |
2号 | 第二只 |
3号 | 第三只 |
4号 | 第一、二只 |
5号 | 第一、三只 |
6号 | 第二、三只 |
7号 | 第一、 二、三只 |
8号 | 都不吃 |
这样子不同的老鼠giao了就代表不同的瓶子有毒,如果都没有giao那么8号有毒
emmm好有道理啊!
怎么样去表达?
秃!!!
思路2
上面的有明显问题就是这个顺序比例不好把控,用计算机语言难以表达,而且容易错乱。
有没有什么好一点的办法呢?
那么肯定是有的,就是采用二进制的办法
疑惑.jpg
不行,三岁老规矩上图!
3只老鼠一只表示一位
第一只试第一位是1的也就是 2,4,6,8
第二只试第二位是1的也就是 3,4,7,8
第三只试第三位是1的也就是 5,6,7,8
只要有那只giao 了就代表响应位数为1的十进制值加一
比如第一只和第三只giao了,那么就相当于第三位和第一位为1
就是: 101(二进制) = 5(十进制)+1
第6瓶是毒药
原理基本上就是终上所述,至于怎么实现,emmm三岁秃头努力中,如有结果会把链接放在下面,如有大佬有思路想法,欢迎打扰。谢谢大家的关注!!!