100个囚犯的脱狱问题
来源:互联网 发布:《知无涯者》 编辑:程序博客网 时间:2024/05/01 12:43
话说有一国王找到100个囚犯,每个人都剃了光头。
国王对他们说:一会儿有人会在你们头上写上1-100之间的随机数。你们只要有一个人能说对大家头上所有数字的和,就都放了。否则统统赠送给芙蓉姐姐做宠物。给你们一炷香的时间好好商量一下对策。
这帮子囚犯都是学过基本算数的,加减乘除都没问题。
一炷香之后,国王的巫师屏蔽了他们之间的交流(不要问我怎么做到的) - 结果每个囚犯都能看到别人头上写的啥,但没办法知道自己的数字。
囚犯们采用什么策略才能保证一定会被释放呢?
解答:
设100个囚犯头上数字的和为sum;第N个囚犯头上数字为Pn(1<=Pn<=100),除第N个囚犯数字和为Tn,则sum = Pn+Tn,则Pn = sum - Tn成立;Pn-1 = - Tn0+sum0(注:如果为负的话加100即可)
第一个犯人:P1-1=-(T10)+0
第二个犯人:P2-1=-(T20)+1
...
第100个犯人:P100-1=-(T1000)+99
因为0<=sum0<=99,sum0是唯一的,则Pn中必有一个是某囚犯自己头上的数字,每个人提交Pn+Tn即可获释。
鸽巢原理也叫抽屉原理,是Ramsey定理的特例。
简单形式
如果n+1个物体被放进n个盒子,那么至少有一个盒子包含两个或更多的物体。
加强形式
令q1,q2,...qn为正整数。如果将
q1+q2+...+qn-n+1个物体放入n个盒子内,那么或者第一个盒子至少含有q1个物体,或者第二个盒子
至少含有q2个物体,...,或者第n个盒子含有qn个物体.
- 100个囚犯的脱狱问题
- 100个囚犯开关问题有bug
- 100囚犯问题
- 国王和100个囚犯
- 100个囚犯和灯泡的那些事儿
- 囚犯和开关的问题
- 囚犯问题
- 趣味算法:国王和100个囚犯
- 趣味算法:国王和100个囚犯(据说是腾讯的面试题)
- 100囚犯问题、100囚犯问题加强版与选择公理(下)
- 100囚犯问题、100囚犯问题加强版与选择公理(上)
- 100囚犯问题、100囚犯问题加强版与选择公理(上)
- 100囚犯问题、100囚犯问题加强版与选择公理(下)
- 囚犯模豆子问题
- 腾讯笔试题--国王招来100个囚犯
- 腾讯笔试题--国王招来100个囚犯
- 国王和100个囚犯还有1盏灯
- 三个囚犯 黑帽子问题
- Silverlight企业级应用 -- BPM / 工作流
- 我的第一章
- 【转】 Vi编辑器
- 5.c++-拷贝构造函数(深拷贝,浅拷贝)
- Ext相关
- 100个囚犯的脱狱问题
- 新手求助
- The art of good programming
- delphi Format函数详解
- RTMP 协议研究
- 初识PYTHON
- 回调与回发的区别
- PYTHON的内置对象 (一)数字对象
- Wifi driver