微软招聘题—狗的问题 的推理
原题:
一个大院子里住了50户人家,每家都养了一条狗,有一天他们接到通知说院子里有狗生病了,并要求所有主人在发现自己家狗生病的当天就要把狗枪杀掉。然而所有主人和他们的狗都不能够离开自己的房子,主人与主人之间也不能通过任何方式进行沟通,他们能做的只是通过窗户观察别人家的狗是否生病从而判断自己的狗病否。(就是说,每个主人只能看出其他49家的狗是不是生病,单独看自己的狗是看不出来的)
第一天没有枪声,第二天还是没有枪声,第三天传出一阵枪声,问有多少条狗被枪杀?
推理过程:
1、肯定有狗病了,至少一条
2、主人必须在发现的当天把狗杀掉(而且主人只能看出别人家的狗是不是病了,自己的狗看不出来),不然此题无法做下去
3、第一天没枪声,说明所有主人都发现了别人的狗中有病狗,但是都无法确认自己的狗是否正常,所以都不开枪,这说明至少有两条病狗,毎个主人最少发现一条或更多的病狗
4、第二天没枪声,在所有主人还是无法确认自己的是否正常,所以不能开枪,那么说明毎人主人都最少看到两条病狗
因为经过第一天大家都没开枪,说明所有人都看到病狗了,大家推测出最少有两条病狗,而不开枪说明毎个人都最少已经看到两条病狗了,
所以还是无法确认自己的狗是否病了。
毎个人都最少已经看到两条病狗了,而自己的又看不出来(那么,过完了第二天没枪声,也就说明最少有三条病狗了),
5、第三天传来一阵枪声,说明主人们终于确认了自己的狗是不是有病了(因为总共只有三条病狗,如果只发现两的话那自己的狗是就病狗了)
综上所述,得出结论:总共有三条狗被枪杀!
浙公网安备 33010602011771号