一道很有意思的面试题,考推理和逻辑能力

原创 2018年04月17日 09:20:41

问题: 一个屋子里面有五十个人,每个人领着一条,而这些狗中有一部分病狗(不少于一条).假定有如下条件:

    
一,狗的病不会传染,也不会不治而愈.也就是说病狗的数量一直不会改变;    
二,狗的主人不能看见自己的狗是否有病,但是狗的主人只有通过别人的狗是否有病才可以看出自己的狗生病了没有;   
三,一旦主人发现自己的狗肯定是一只病狗,就会在当天开枪打死这 条狗;   
 四,狗必须由他的主人亲自动手开枪杀死.如果他们在一起第一天没有枪声,第二天没有枪声,第三天发出了一片枪声,
问有几条狗被打死?

答案:

这道题本来是一个很简单的数学归纳法的应用.我们先来审题,将其题设变成我们的语言和思维,这是解题必须的步骤.题设条件解读结果如下:一,肯定有狗生病,也就是说病狗的数量大于零;二,病狗的数量不会发生变化;三,狗的主人只有通过看别人的狗来确定自己的狗生病了没有;四,如果主人发现自己的狗病了,绝对不会当天不杀死它.

下面讲解一下如何得出结果.第一天,大家都没有开枪杀狗,说明一个问题,就是绝对不只一条狗有病.试假设只有一条狗有病,那么就会有一个人看不见病狗,他根据题设中说一定有病狗就可以推断自己的狗是病的,于是第一天就该响起枪声.第一天的结果已经证明了不只一条狗有病,而且不难看出假设只有一条狗有病就一定可以在第一天响起枪声,击毙那一条生病的狗.此时我们不妨大胆猜测一下:第几天开枪就有几条狗是病的.
到了第二天,我们就可以开始验证我们的结论了.试想,如果只有两条病狗,狗的主人必然看不见其他狗生病,于是发现自己的狗是生病的,那么第一天看到一条病狗的人就会在第二天根据如果有一条病狗,那么第一天就会响起枪声,而第一天没有人开枪,则有不少于一条狗有病.再看看发现自己只看见一条狗生病了,那么想来,自己的狗就是一条病狗.于是就会根据上面的方法推断得到自己的狗病了.于是开枪,响起的枪声应该是两声.
但是到了第二天仍然没有枪声,于是到了第三天.第三天的时候响起枪声了.前面已经说了,绝对不是有三条以下的狗有病,否则枪声早就响了.但是,如果是四条狗有病,他们可以判断自己的狗是病的吗 根据前面所讲,每个病狗的主人都看见三条病狗,而每个人都想自己可以看见三条狗有病,由前面的推导谁也不能肯定自己的狗是病的,就不能判断自己是否该开枪打死自己的狗,于是应该不会响起枪声.于是我们判断出了应该是三条狗有病.
有人问了,如果第四十九天响起枪声,你是不是也就这样推导 四十九步 当然不必要啊.其实根据数学归纳法的思想,我们只要开动脑筋,根据前面的三步推导的结果的特殊性很容易可以得到一个更加一般的推论――只要是符合上述题目条件一到四假设的,无论总共是多少条狗或者无论是哪一天响起了枪声,我们都可以得到是多少条狗倒下.前面已经大胆猜测第几天开枪对应的打死的狗的数目就是几.现在这个答案似乎得到了更加充分的肯 定.但是有的朋友仍然要求我们的答案的绝对正确性,那么我们可以根据归纳总结的方法证明如下:
证明:
1.第一天的枪响了,
说明有一个人看不见病狗,
但是最少有一条狗有病,
于是得到病狗是自己的,
于是开枪杀死自己的狗.
根据这个结论,我们从数字上得到了规律,于是我们猜测规律,用来寻找方便的解决问题的办法.不妨设第N天开枪,必然就是有N条狗倒下.
2.假设,第N天枪响了,
有N条狗是有病的,
而如果第N天没有枪声,
根据小于或等于N的数字n变成n=N,直到n=l的论证,于是得到了答案是第N天没有开枪不可能是少于或等于N条狗生病了,
就说明有多于N条狗有病. ・
3.证明的重点在于第N+1天的情况:
假设第N+1天想起了枪声,
根据第N天没有枪声,
得到了多于N条狗有病;
再假设有多于N+1条狗有病,
根据多于N条狗有病的时候,第N天所有人的人均不能判断自己的狗一定生病,
现在多于N+1条狗生病,那么大家就无法在N+l天确认自己的狗是否生病,无法决定自己是否应该开枪.
我们得到了结论在N+1天也是无法响起枪声的.
于是与题设以及我们的假设中N+1天响起了枪声发生冲突,
冲突的原因在于我们假设了多于N+1条狗有病,
就说明不可能多于N+I条狗生病了,
于是得到证明有N+1条狗有病.
综上,在第几天开枪就会有几条狗有病被杀得以证明.

2017浙工大院赛预赛 D 简单的数据结构【双端队列||数组模拟】

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 题目描述 栗酱有一天在网上冲浪的时候发现了一...
  • Irish_Moonshine
  • Irish_Moonshine
  • 2017-12-16 23:48:31
  • 75

一道逻辑推理题的程序实现(纯属娱乐)

http://t1174779123.iteye.com/blog/2008357
  • ocean0815
  • ocean0815
  • 2014-06-29 06:56:35
  • 730

一道很有意思的面试题

求较小的值,不能用 比较运算符 if-else ?: while for 内嵌汇编 递归 第三方函数 int Min(int a, int b) {   //write code here ...
  • kingskyleader
  • kingskyleader
  • 2011-08-17 03:51:09
  • 1663

公司面试题

IBM公司面试题:病狗问题   村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察...
  • liutengpan
  • liutengpan
  • 2007-11-26 23:33:00
  • 3939

JAVA面试常见的推理题

公司在面试程序员时,不仅考查一个人的专业水平,更注重一个人应变能力和逻辑思考能力。这就要求我们在日常生活中加以锻炼,以下是我自己总结的一些题,希望对各位有所帮助。...
  • GUO18735177413
  • GUO18735177413
  • 2015-01-15 16:12:01
  • 708

爱因斯坦问题(推理题)

  • 2009年06月04日 16:45
  • 924B
  • 下载

IBM经典面试题:挑战你的逻辑分析能力

1.村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也...
  • SmartTony
  • SmartTony
  • 2007-01-12 23:50:00
  • 1312

面试逻辑题吐血整理

你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费? 答案:第一天给1段,第二天让工人把1段归还后再...
  • lxubin
  • lxubin
  • 2016-08-24 14:31:15
  • 10628

逻辑能力-面试题

玛莎、比尔和特雷没人都有两个不同的职业,tamen
  • u013007305
  • u013007305
  • 2014-07-11 01:34:35
  • 670

面试常见的逻辑推理题

1.一个粗细均匀的长直管子,两端开口,里面有4个白球和4个黑球,球的直径、两端开口的直径等于管子的内径,现在白球和黑球的排列是wwwwbbbb,要求不取出任何一个球,使得排列变为bbwwwwbb。 ...
  • W2014200746
  • W2014200746
  • 2017-06-02 02:21:22
  • 2058
收藏助手
不良信息举报
您举报文章:一道很有意思的面试题,考推理和逻辑能力
举报原因:
原因补充:

(最多只允许输入30个字)