黑马程序员技术交流社区

标题: 遇到一个奇怪的编程题,大哥求助 [打印本页]

作者: 782385854    时间: 2013-10-22 20:40
标题: 遇到一个奇怪的编程题,大哥求助
本帖最后由 782385854 于 2013-10-23 09:55 编辑

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

作者: Liu阳    时间: 2013-10-22 20:51
一个狗有病,第一天会响,主人看其他狗没事
二个狗有病,第二天会响,主人看其他的有一个有病,判断自己的狗没事,第一天不响主人发现自己的有病,第二天响
三个狗有病,第三天响,主任看其他的有二个有病,判断自己的狗没事,第一天不响第二天不响,第三天确定原来自己的狗也有病
哈哈,是吗?
作者: 迷你卡卡    时间: 2013-10-22 20:52
呵呵,这个我知道,这是我今年考公务员时候行测中的一道题,但是打字有点麻烦,你可以去找个公务员考试网站上去搜
作者: 追溯客    时间: 2013-10-23 09:17
如问题被解决,请及时把分类设为"已解决",黑马有你更精彩!

作者: 782385854    时间: 2013-10-23 09:46
迷你卡卡 发表于 2013-10-22 20:52
呵呵,这个我知道,这是我今年考公务员时候行测中的一道题,但是打字有点麻烦,你可以去找个公务员考试网站 ...

:funk:这样也能加分么,·······你的理由····
作者: 782385854    时间: 2013-10-23 09:53
第一种推论:

  A、假设有1条病狗,病狗的主人会看到其他狗都没有病,那么就知道自己的狗有病,所以第一天晚上就会有枪响。因为没有枪响,说明病狗数大于1。

  B、假设有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条狗必死。

作者: 追溯客    时间: 2013-10-25 12:05

同学给你加分了!好好学习!蔡蔡和叶叶在黑马等着你!黑马有你更精彩!快点为了当土豪努力吧!

作者: 大虾挂了    时间: 2013-10-25 13:03
真有趣的一道题
作者: 782385854    时间: 2013-10-25 14:33
追溯客 发表于 2013-10-25 12:05
同学给你加分了!好好学习!蔡蔡和叶叶在黑马等着你!黑马有你更精彩!快点为了当土豪努力吧!
...

呀,幸福来的太突然了·····谢谢啦,加分加的好爽




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2