试试看,IBM招聘题 
村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声,问有几条病狗,如何推算得出? 
这是ibm公司的招聘题,必须在20分钟内答出。各位加油咯!!

解决方案 »

  1.   

    这题的解也可能是这样:假设有2只(A,B),那么除A,B之外的48人都能看到有2只病狗,由于他们并不知道到底有多少条病狗,也就无法确定自己的狗是否为病狗,所以他们永远没有理由开枪;而A,B两人各能看到一条病狗,同理,他们也无法确定自己的狗是否为病狗,也不能开枪,由此推断有2只不对; 
    假设有3只,依据以上的推理,同样不对,没法听到枪声,同样大家可以一直推到有50只的情况,都是不成立的。 
    如果只有一只病狗,那么肯定病狗的主人看不到有病狗,必然会推出自己的狗是病狗,至于为什么要在第三天开枪,还是一连串枪声,那是出题人故意这样说的以迷惑解题人!此题只要有人看到病狗,由于无法知道共有多少条病狗,也就无法确定自己的狗是否是病狗,即无法开枪!所以答案只有1能满足题意!
      

  2.   

    其实这就是个递归的问题!假设有一条病狗!那么它的主人肯定不会检查到期他人的狗有病!所以第一天他就会枪毙自己的狗!如果有两条病狗,那么假设把并狗设为A,B号,那么他们的主人在第一天肯定都会只检查到一条病狗,他们的主人会认为自己的狗可能没病,当然也可能有病!没有理由枪毙自己的狗!过了第一天没有枪响,所以他会认为大多数的人会查到两条病狗(因为他检查到了一条病狗,只有自己的没有查)!所以自己的肯定是病狗,所以第二天就会有两声枪响,以次类推第 N 天枪响就是有 N 条病狗,这就是个递归的问题!!!
       当然这是有前提的:
       一、人给狗作检查不会出错;
       二,人不会偏袒自己的狗,只有认识到自己的狗有病就会枪毙它!
       三、以上以时间为单位主要是为了划分,我们也可以以小时,时刻......自己可以根据需要自己定义时间!!当然这一切在计算机上实现就不会出现这个问题了!
       我想告诉楼主我今天刚看到你出的题!所以20分钟时不能实现你了!!!!
      

  3.   

    偶同意zsl_oo7(小雷) 的说法;和天数没有很大的关系吧,如果非要是第三天才听到枪声,那我的理解:他们第一天看一次,第二天一次都没有看,第三天看一次。最后执刑。
      

  4.   

    有点迷茫;
    看了aGreenApple() 、hexuedong(青风)、zsl_oo7(小雷)。说的都挺有逻辑的
    不过我认为有这样一种情况。如果50条狗中有一条病狗的话。病狗的主人至少需要知道每个人检查完其它49条狗要用多少时间,这样他才能决定自己的狗是不是有病。如果楼主有标准答案的话请与大家分享。谢谢
      

  5.   

    1 如果为1,第一天那条狗必死,因为狗主人没看到病狗,但病狗存在。 2 若为2,令病狗主人为a,b。 a看到一条病狗,b也看到一条病狗,但a看到b的病狗没死故知狗数不为1,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b的想法与a一样,故也开枪。 
    由此,为2时,第一天看后2条狗必死。 3 若为3条,令狗主人为a,b,c。 a第一天看到2条病狗,若a设自己的不是病狗,由推理2,第二天看时,那2条狗没死,故狗数肯定不是2,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b和c的想法与a一样,故也开枪。 
    由此,为3时,第二天看后3条狗必死。 4 若为4条,令狗主人为a,b,c,d。a第一天看到3条病狗,若a设自己的不是病狗,由推理3,第三天看时,那3条狗没死,故狗数肯定不是3,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b和c,d的想法与a一样,故也开枪。 
      

  6.   

    同意shantang1984(苦你的苦)
    1 如果为1,第一天那条狗必死,因为狗主人没看到病狗,但病狗存在。 2 若为2,令病狗主人为a,b。 a看到一条病狗,b也看到一条病狗,但a看到b的病狗没死故知狗数不为1,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b的想法与a一样,故也开枪。 
    由此,为2时,第一天看后2条狗必死。 3 若为3条,令狗主人为a,b,c。 a第一天看到2条病狗,若a设自己的不是病狗,由推理2,第二天看时,那2条狗没死,故狗数肯定不是2,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b和c的想法与a一样,故也开枪。 
    由此,为3时,第二天看后3条狗必死。 4 若为4条,令狗主人为a,b,c,d。a第一天看到3条病狗,若a设自己的不是病狗,由推理3,第三天看时,那3条狗没死,故狗数肯定不是3,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b和c,d的想法与a一样,故也开枪。 
      

  7.   

    wangkunkevin(冰咖啡) 
    请你看清楚我是怎么说的!!我那还有个递归呢!!这只是说在第三天有枪响!那么你可以把我的 N 当作为 3 阿!我所说的可以回答任意的哪天有枪响!我相信大家的都会看懂的吧!!!!