求教一个算法

netstudy0105 2011-07-13 03:16:03
求教一个算法
有20个人,所有人都有一顶帽子,这20顶帽子中至少有一顶是绿帽子,其他都是红帽子,每个人只能看见别人带的帽子颜色,看不见自己帽子的颜色,有20人之外的1人说,他关灯后,感觉自己是绿帽子的请敲桌子,第一次关灯,没人敲桌子,第2次没人敲桌子,一直到第5次,才听见噼里啪啦的有人敲桌子,请问一共有几个人带绿帽子?
...全文
201 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2011-07-16
  • 打赏
  • 举报
回复
第一次没人敲,起码说明至少有2顶绿帽子,才能保证每都可以可以看到1顶
第二次没人敲,起码说明在已知有2顶的情况,还能保证每人都看到了2顶,也就是说至少有3顶存在
而到了第5次,就是至少6顶
netstudy0105 2011-07-16
  • 打赏
  • 举报
回复
请教下死狗一样的问题是什么问题?
netstudy0105 2011-07-15
  • 打赏
  • 举报
回复
没那个大哥大姐指点下?
lf200000 2011-07-15
  • 打赏
  • 举报
回复
和狗死了的问题一样
HelloJimmy520 2011-07-14
  • 打赏
  • 举报
回复
感觉自己是绿帽子的请敲桌子
敲了桌子,就表示怀疑自己带的绿帽子,真蛋疼
netstudy0105 2011-07-14
  • 打赏
  • 举报
回复
别让沉了,我当时的回答和2楼一样,但是不知道对不对,请高手继续指点
子夜__ 2011-07-13
  • 打赏
  • 举报
回复
这个是不是狗死了的问题一样?
laowang134 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lost_painting 的回复:]
基于前提是: 这20个人都够聪明,都精于计算.

假设一顶绿帽子,那么第一次关灯的时候,这个戴绿帽子的可怜虫就会敲了,因为他看到其他人都是红帽子,其他人都没敲,说明只有自己脑袋上顶着一顶绿帽子.而实际上第一次没人敲
因此肯定不止一定绿帽子.有两顶.

假设两顶绿帽子,那么第二次关灯的时候,这两个戴绿帽子的可怜虫就会敲了,因为两个人第一次关灯前只看到一顶绿帽子,而对方在第一次关灯时都没敲,……
[/Quote]
基于前提是: 这20个人都够聪明,都精于计算.
还不是一般的精于计算!~。。
鸭梨山大帝 2011-07-13
  • 打赏
  • 举报
回复
基于前提是: 这20个人都够聪明,都精于计算.

假设一顶绿帽子,那么第一次关灯的时候,这个戴绿帽子的可怜虫就会敲了,因为他看到其他人都是红帽子,其他人都没敲,说明只有自己脑袋上顶着一顶绿帽子.而实际上第一次没人敲
因此肯定不止一定绿帽子.有两顶.

假设两顶绿帽子,那么第二次关灯的时候,这两个戴绿帽子的可怜虫就会敲了,因为两个人第一次关灯前只看到一顶绿帽子,而对方在第一次关灯时都没敲,说明还有一顶绿帽存在,很不幸这顶绿帽就在自己身上,所以第二次就会敲,
而实际是第二次也没敲,那就应该是三顶.


第一次关灯,敲 是一顶.
第二次关灯,敲 是两顶.
....
....
依此类推...
第五次关灯,敲 是五顶.

基于前提是: 这20个人都够聪明,都精于计算.

在不确定这个前提的条件下, 1~20顶都有可能.
鸭梨山大帝 2011-07-13
  • 打赏
  • 举报
回复
基于前提是: 这20个人都够聪明,都精于计算.


xiaoyu821120 2011-07-13
  • 打赏
  • 举报
回复
这个问题,以前就见过,问题描述不太一样,好像是道微软的面试题,解法就是2楼说的数学归纳法。
坦诚 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cloud_drift 的回复:]
如果只有一顶绿帽子,那么第一次关灯戴绿帽子的那个就该敲了。
如果有两顶绿帽子,那么第一次时戴着的人看到有一个戴绿帽子,不会敲。但是发现别人也没有敲,那么说明自己也是绿帽子,第二次关灯就该敲了。

由此可知,绿帽子人数 = 开始敲台子的回合数。

所以我觉得有5个家伙带了绿帽子~

话说为什么是“绿”帽子?
[/Quote]

NND 引用错了!是这个!
坦诚 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xuyutanggg 的回复:]
这个问题有点高深!想知道答案
[/Quote]

这个说法有点不太准确,现在是谁都不知道有 几顶绿帽子!
angygaga 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cloud_drift 的回复:]
如果只有一顶绿帽子,那么第一次关灯戴绿帽子的那个就该敲了。
如果有两顶绿帽子,那么第一次时戴着的人看到有一个戴绿帽子,不会敲。但是发现别人也没有敲,那么说明自己也是绿帽子,第二次关灯就该敲了。

由此可知,绿帽子人数 = 开始敲台子的回合数。

所以我觉得有5个家伙带了绿帽子~

话说为什么是“绿”帽子?
[/Quote]
这个有些意思。
indusl 2011-07-13
  • 打赏
  • 举报
回复
感觉自己是绿帽子的请敲桌子
Cloud_drift 2011-07-13
  • 打赏
  • 举报
回复
如果只有一顶绿帽子,那么第一次关灯戴绿帽子的那个就该敲了。
如果有两顶绿帽子,那么第一次时戴着的人看到有一个戴绿帽子,不会敲。但是发现别人也没有敲,那么说明自己也是绿帽子,第二次关灯就该敲了。

由此可知,绿帽子人数 = 开始敲台子的回合数。

所以我觉得有5个家伙带了绿帽子~

话说为什么是“绿”帽子?
坦诚 2011-07-13
  • 打赏
  • 举报
回复
这个问题有点高深!想知道答案

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧