查病狗(一面试题)
http://doublecqw.iteye.com/blog/967648
不知道啥的,链到这个帅哥的blog然后翻了一下,看到了一个面试题。
?
问题:
n个人,每人一头狗。这n头狗中并有病狗,然后每个人的都能检测出其他n-1个人的病狗(不能检测自己的)。经过推断后,如果猜测到自己的狗是病狗,就把自己的狗扑街掉!(没错,这些都足够高的IQ)
第一天没枪声,第二天也没有,第三天传来一阵阵枪声,问,有几头病狗。
?
?
答案:
病狗数(最多就是自己的检测数+1 )
?
1
那么,肯定有一个人A没有检测到病狗。但条件中有明确说n条狗中有病狗!
2
有A,B两人检测到了1条病狗,其他人都检测到了两头病狗。
?假设你是C,因为你检测到了2头病狗,所以,第二天你肯定没理由怀疑自己。
?假设你是A/B,第一天都没开枪,说明病狗数不止一头,至少是两头(其实就是2头,如果是3头,那我知道能检测到2头)。但我检测的只有一头,说明,我自己的狗是病的!干掉!
(答案:3
有A,B,C两人检测到了2条病狗,其他人都检测到了3头病狗。
假设你是D,因为你检测到了3头病狗,所以,第3天你肯定没理由怀疑自己。
?假设你是A/B/C,第2天都没开枪,说明病狗数不止2头,至少是3头(其实就是3头)。但我检测的只有2头,说明,我自己的狗是病的!干掉!
?
……
?
n
所有狗都有病,那么,没人都检测到n-1头狗有病。
在第n-1天,大家都没有理由怀疑自己的狗。但是到了第n天,说明,至少有n条狗有病了(其实就是n头),而自己检测到只有n-1头。那就说明自己的是病狗。齐刷刷的全部枪毙!