黑马程序员技术交流社区

标题: 一道经典问题!希望有详细的分析过程 [打印本页]

作者: 刘长辉    时间: 2013-7-1 15:01
标题: 一道经典问题!希望有详细的分析过程
在一个村里面有50个村民,每个村民都养了一条狗,已知这个村子一定有病狗,每个村民都有一把枪,
村民只能看别人的狗判断自己的狗是不是病狗,如果是病狗每天5点准时开枪打死,第一天没有开枪,第
二天没有开枪,第三天枪响了。问有多少只病狗?

作者: 肥猫    时间: 2013-7-1 15:09
这题目我是真没看懂,第一天,还是第几天有关系么?还5点?
作者: 极限冰风    时间: 2013-7-1 17:01
  1. public static void main(String[] args) {
  2.                 // TODO Auto-generated method stub

  3.                 //定义一个变量来记录病狗的数量
  4.                 int a=1;
  5.                 /*
  6.                  * 使用循环来记录每天的病狗;因为第一天只有一条狗被传染所以a=1,而是在第三天早上开的枪所以循环小于3
  7.                  * 而每天都会有狗被传染,第一天1条,第二天变成2条,第三天变成4条以此类推来找到每天共有几条病狗结果为4条
  8.                  * 以上是个人的想法;只做参考不一定对只是共同学习谢谢
  9.                  */
  10.                 for (int i =1; i <3; i++) {
  11.                         a=+a*2;
  12.                 }
  13.                 System.out.println(a);
  14.         }
复制代码

作者: liujkh123    时间: 2013-7-1 17:04
设疯狗n只,因为必定有疯狗 n >= 1
第一天  有人看到n只,有人看到n-1只,但是大家都要猜测自己的狗是否为疯狗,如果n=1,很好,那个看到0个疯狗的人肯定立马杀狗了,但是没有人看到0个疯狗,所以n >= 2,所以这时候大家都知道肯定不止一个疯狗。
第二天,还是有人看到n只,有人看到n-1只,大家还是要判断自己的狗是否为疯狗,如果n=2,很好,那个只看到1个疯狗的人肯定立马杀狗了,因为第一天已经知道疯狗不止1个,你现在只看到一个疯狗,还有一个疯狗就是你家的了,但是第二天还是没有人杀狗,说明大家看到的都有两个或两个以上的疯狗,所以大家都有一个共识了,疯狗至少有三个
第三天, 枪响了,说明什么,说明有人只看到了2条疯狗,但是至少三条疯狗,哈哈 你家狗疯了,只能杀了。
作者: 杨翔    时间: 2013-7-1 17:22
极限冰风 发表于 2013-7-1 17:01

:lol强,这都能整出代码
作者: 神之梦    时间: 2013-7-1 20:17
我觉得度娘的解释,比较好理解些http://baike.baidu.com/view/2292345.htm
作者: 神之梦    时间: 2013-7-1 20:18
极限冰风 发表于 2013-7-1 17:01

题目的愿意是不会传染
作者: 汪平乐    时间: 2013-7-1 21:56
神之梦 发表于 2013-7-1 20:18
题目的愿意是不会传染

给我版主你的QQ号:我358998716:汪平乐:handshake
作者: 刘长辉    时间: 2013-7-2 10:43
想让大家分析一下过程,其实我感觉答案是什么无所谓,这个题考的是情商不是智商




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