IBM公司向来以高素质人才作为企业持续竞争力的保证。进入IBM公司是差不多每个IT人的梦想。下面这条IBM公司的面试题,给大家试试看,看看是否具备进入IBM的实力!村子里有50个人,每人有一条狗,在这50条狗中有病狗(这种病不传染),于是人们要找出病狗。
每个人可以观察其他49条狗,以判断他们是否生病,(如果有病一定能看出来),只有自己的狗不能看,观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的狗是病狗就是枪毙自己的狗(发现后必须在一天内枪毙),而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天大家全看完了,但枪没有响,到了第三天传来一阵枪声,问村里共有几条病狗,如何推算出来的?
每个人可以观察其他49条狗,以判断他们是否生病,(如果有病一定能看出来),只有自己的狗不能看,观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的狗是病狗就是枪毙自己的狗(发现后必须在一天内枪毙),而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天大家全看完了,但枪没有响,到了第三天传来一阵枪声,问村里共有几条病狗,如何推算出来的?
n = 0 1
n > 0 n + 1 以有病狗的主人的视角,进行推断,就算出来了哈因为外面有n条病狗,所以在前n天内,才不会认为自己的狗是病狗,
直到过了n天,既然外面的病狗主人没枪毙自己的狗,自然也是因为他们看到了n条病狗,
所以
解析:
没有病狗不可能,前提条件不允许。
如果是一条,那么什么病狗都没有发现的人的狗就有问题,很自然第一天就有枪响,可是等了一天没有,那么每个人都在其他人的狗中发现了问题。
进行到第二天,那么就绝对不止一条狗有病了,那么很显然只看到一条狗有病的人就必须相信自己的狗有病了,确有如此的话,在第二天就应该有枪响,事实没有,那么就没有人只看到一条狗有病。
到了第三天,可以得出结论没有人只看到一条狗有病,那么每个人至少看到2条,此时的病狗数〉=3条,依此类推,只看到2条病狗的人绝对当天之内会枪杀自己的狗。
.......
m < n
枪声=YZ=50-Y就可以知道了
条件1:50条狗中有病狗
条件2:每个人可以观察其他49条狗,只有自己的狗不能看
条件3:观察后得到的结果不得交流
条件4:每个人只有权利枪毙自己的狗
条件5:第一天大家全看完了,但枪没有响
条件6:到了第三天传来一阵枪声
设病狗的条数是n
条件1 => n >= 1;
条件1 + 条件5 + 条件4 => n > 1 (条件7);(如果只等于1,则必有人第一天就发现别的狗没有病,只有自家的狗有病,会毙了自家的狗);
条件6 + 条件7 => n > 2 (条件8); (到了第二天,每个人都知道n>1, 若n = 2, 有两人看到只有一只病狗,则可知n = 1, 2,而 n > 1,推得n = 2,发现自家的狗有问题,与条件6不符; )
条件6 + (条件8) => n = 3;(到了第二天,每个人都知道n>1, 若n = 2, 有三人看到只有两只病狗,则可知n = 2,3,而 n > 2,推得n = 3,发现自家的狗有问题,条件6符合)
假设A看到一条病狗而且第一天就听到枪声,则说明自己的狗没有问题;
假设A看到一条病狗但第一天没有听到枪声,则说明那条病狗的主人也看到了一条病狗(否则他会第一天杀了自己的狗),则说明有两条病狗,于是A杀自己的狗;
假设A看到二条病狗但第一天、第二天都没有听到枪声说明二条病狗的主人看到的也是两条病狗,也就是有三条病狗,所以A杀自己的狗;
假设A看到三条病狗但第一、第二、第三天都没有听到枪声说明三条病狗的主人看到的也是三条病狗,也就是有四条病狗,所以A杀自己的狗;......以此类推有几只病狗则第几天被全部杀。