软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
对最近流传的IBM的一道面试题目的个人看法。

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

原题:

村子里有50个人,每人有一条狗,在这50条狗中有病狗(这种病不传染),于是人们要找出病狗。
 
每个人可以观察其他49条狗,以判断他们是否生病,(如果有病一定能看出来),只有自己的狗不能看,观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的狗是病狗就是枪毙自己的狗(发现后必须在一天内枪毙),而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。

第一天大家全看完了,但枪没有响,到了第三天传来一阵枪声,问村里共有几条病狗,如何推算出来的?

答:三条病狗。原因如下分析。

首先要说明的是这50个人也都不知道有多少条病狗,而是根据推论来判断自己的狗是不是病狗,并且在推论的当天就把自己的狗杀掉。(据我推断是卖肉了)
1、第一天没有枪响,说明不是一条狗。并且所有的人都可以推断出病狗数量大于等于2。因为如果是一条的话,肯定那个病狗的主人会看不见一条病狗,从而推断自己的狗是病狗,并杀掉it。
2、第二天,枪依然没有响。所有的人都可以推断出病狗数量大于等于三,因为不可能是2条病狗。在第二天大家都已经知道最少有2条以上的病狗,如果是2条的话,那么那2条病狗的主人肯定只看到一条,而且他们也知道最少有2条,那么肯定会把自己的狗杀掉。所以前2天枪都没有响。
3、激动人心的第三天终于到来,枪响了。经过了2天以后,所有的人都可以分析判定最少有三条病狗了。于是在第三天,看见2条病狗的3个主人忍痛把自己的狗杀掉了。
4、不可能是4条以上的狗,因为根据推理,如果有4条狗的话,那么肯定在第四天大家才能判断出来。
呵呵,真相大白了。
程序狠简单,这里就不写了。

 




相关文章

相关软件