50条狗中有多少条病狗?
来源:互联网 发布:xlwt与python 编辑:程序博客网 时间:2024/05/09 08:44
问题:
村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,
只有自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,
没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声,问有几条病狗,如何推算得出?
解析:
1. 假设只有1条狗有病,狗主人看其他49条狗都是好的,则知道自己的狗有病,则第1天晚上就会去杀了自己的狗;
2. 假设2条狗有病,设为A和B狗,则A狗主人看到B狗有病,B狗主人看到A狗有病,所有他们都不知道自己的狗是否有病,所有地1天没人杀狗;第2天,A狗主人看到B狗主人没杀狗,说明除了A狗还有其他狗生病,而其他的48条狗没病,所有A狗主人肯定知道自己的狗也有病,就会在第二天晚上去杀狗;B狗主人同意会在第二天晚上去杀狗;
3. 依次类推... ...
4. 即如果有N条狗有病,就会在第N天晚上杀狗
第一种推论:
1.假设有1条病狗,病狗的主人会看到其他狗都没有病,那么就知道自己的狗有病,所以第一天晚上就会有枪响。因为没有枪响,说明病狗数大于1。
2.假设有2条病狗,病狗的主人会看到有1条病狗,因为第一天没有听到枪响,说明病狗数大于1,所以病狗的主人会知道自己的狗是病狗,因而第二天会有枪响。既然第二天也没有枪响,说明病狗数大于2。由此推理,如果第三天枪响,则有3条病狗。
第二种推论:
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.余下即为递推了,由n-1推出n。答案:n为4。第四天看时,狗已死了,但是在第三天死的,故答案是3条。
- 50条狗中有多少条病狗?
- 有多少条病狗?
- 多少
- 多少
- 多少
- 多少柔情多少泪
- 散户炒股的50条毛病 看看你自己有多少?
- 户炒股的50条毛病 看看你自己有多少?
- 50件开心事,你经历了多少?
- OSPF你懂多少之经典问题50个
- mysql varchar(50)到底能存多少个汉字
- 包月多少?
- 蓝筹知多少
- 晶振知多少
- 日系车知多少
- fd多少
- 多少单词
- 多少分
- POJ 2456 Aggressive cows 二分
- 图学PowerBuilder---PB中的一些小问题及解决
- Qt基础——Qt4.7安装 windows7+Qt+VS2008
- 将中缀表达式转换为后缀表达式的简便方法
- FullCalendar(日程管理控件)
- 50条狗中有多少条病狗?
- HDU 2105 The Center of Gravity
- 五大开源游戏引擎介绍
- JSP
- UVA 573 蜗牛
- 使用QUiLoader来动态加载.ui文件
- QUiLoader:彻底分离你的Ui设计工作(含例子)
- Android入门(5)最简单的Handler例子
- S5PV210 WinCE6.0 使用双通道512MmDDR(256mx2)