• 面试题目 到底有几条病狗


    题目:
        村子里有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声,问有几条病狗,如何推算得出?

        分析:
    1. 如果只有一条病狗,根本就没有这么多故事。病狗主人的心理活动如下。病狗主人看到49条好狗,又已知50只狗里有病狗。那推出自己的狗有病就是必然了。月黑风高杀狗夜,寂静的山村荡起一阵枪声……
    2. 同样是只有一条病狗的第一天,看看其余的狗主人是怎么想的。其余的主人看到有一条病狗,不知道自己的是不是病狗,那么他就绝对不会开枪杀自己的狗,因为没有在证据,同样他也不会一口咬定自己的狗没问题,也因为没有证据。他所能使用的确定病狗数目的方式就是等待。
    3. 如果第一天晚上没有枪响,说明什么?病狗不止一只,因为一只绝对活不了呀。病狗主人只看到一只病狗,晚上丫的还没动静。说明,昨晚上他看到的那只病狗的主人跟他想法一样。等对方开枪呢。大于一只,小于三只,而他只看到一只,那自己的就肯定是病狗罗。子弹上膛,开火,吃狗肉……其余的狗主人看到了两只病狗,又由于上面人的心境,他们早就猜到了第一天晚上不会有枪响的事实。继续等待。
    4. 如果第二天晚上也没响,人群中只看到一条,两条病狗的情况已经被排除了,肯定有人看到三条或三条以上的病狗了。如果第n天没响枪,局外人可以认定至少有n+1条病狗;主人们则要么等待,要么决定晚上下手。
    5. 第三天枪响了,说明一共三只狗病了。
    由题目,不管是第几天,大伙儿开枪了,所有的病狗都干掉了,那么我们能得出什么样的直接结论呢?由于病狗的主人是看不到自己的狗的,那么病狗主人肯开枪的依据就只有一条:他敢确定,所有的病狗数比他看到的病狗数少1. 而这个病狗的确切数字要么是自己看到的病狗的数目,要么是那个数目再加上自己的那一条。每一位主人能做的就是数数自己能看到的n条病狗后,前n天该干啥干啥,就是不要和邻居们谈论狗的事儿,呵呵。等到第n天晚上看是否有枪响。如果那天晚上枪不响,就该轮到自己第二天下手了。

    这题很有意思。在主人们看来信息不对称,但局外人看得出信息不对称的环特征。所以,主人们就要利用这种环特征和自己的信息来作出决定。有意思的就是这种决定还具有数学归纳法的特点。面试时如果能当场拿下这道题目,其人对认识该问题初期混乱思路的整理,头脑的清醒程度,都当真令人钦佩。

  • 相关阅读:
    哈希表
    java读写xml文件
    Java学习之Hessian通信基础
    DevExpress 中 gridView编辑单元格,失去焦点后,内容继而消失
    DevExpress控件的GridControl控件小结
    Spring 架构图
    WebLogic和Tomcat的区别
    EJB到底是什么,真的那么神秘吗??
    C# 枚举类型
    关于C#的Main(String[] args)参数输入问题
  • 原文地址:https://www.cnblogs.com/awpatp/p/1597040.html
Copyright © 2020-2023  润新知