从腾讯的一道笔试题说起

来源:互联网 发布:淘宝棉麻女装 编辑:程序博客网 时间:2024/05/16 16:09

实习生笔试倒数第二道大题,用到的知识:博弈论,离散数学

故事背景及规则:

五个海盗抢到了100个金币,每一颗都一样的大小和价值连城。
他们决定这么分:
1.抽签决定自己的号码 ------ [1、2、3、4、5]
2.首先,由1号提出分配方案,然后大家5人进行表决,当且仅当超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼。
3.如果1号死后,再由2号提出分配方案,然后大家4人进行表决,当且仅当超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼。
4.以次类推
条件:每个海盗都是很聪明的人,都能很理智的判断得失,从而做出选择。

问题:第一个海盗提出怎样的分配方案才能够使自己免于下海以及自己获得最多的金币呢?


正解:

首先要确定一下海盗的想法-首先要保住小命,然后获得最多的钱。

接下来用倒推法来解决.


5号

因为他是最安全的,没有被扔下大海的风险,因此他的策略也最为简单,即最好前面的人全都死光光,那么他就可以独得这100枚金币了。


4号

他的生存机会完全取决于前面还有人存活着,因为如果1号到3号的海盗全都喂了鲨鱼,那么在只剩4号与5号的情况下,不管4号提出怎样的分配方案,5号一定都会投反对票来让4号去喂鲨鱼,以独吞全部的金币。哪怕4号为了保命而讨好5号,提出(0,100)这样的方案让5号独占金币,但是5号还有可能觉得留着4号有危险,而投票反对以让其喂鲨鱼。因此理性的4号是不应该冒这样的风险,把存活的希望寄托在5号的随机选择上的,他惟有支持3号才能绝对保证自身的性命。


3号

他经过上述的逻辑推理之后,就会提出(100,0,0)这样的分配方案,因为他知道4号哪怕一无所获,也还是会无条件的支持他而投赞成票的,那么再加上自己的1票就可以使他稳获这100金币了。


2号

2号也经过推理得知了3号的分配方案,那么他就会提出(98,0,1,1)的方案。因为这个方案相对于3号的分配方案,4号和5号至少可以获得1枚金币,理性的4号和5号自然会觉得此方案对他们来说更有利而支持2号,不希望2号出局而由3号来进行分配。这样,2号就可以屁颠屁颠的拿走98枚金币了。


1号

1号海盗更不是省油的灯,经过一番推理之后也洞悉了2号的分配方案。他将采取的策略是放弃2号,而给3号1枚金币,同时给4号或5号2枚金币,即提出(97,0,1,2,0)或(97,0,1,0,2)的分配方案。由于1号的分配方案对于3号与4号或5号来说,相比2号的方案可以获得更多的利益,那么他们将会投票支持1号,再加上1号自身的1票,97枚金币就可轻松落入1号的腰包了。


高..实在是高。

但回头想一下的话,仔细一步步推,也能够8,9不离10.


类似的问题还有,下面举两个简单的例子。

玩泥巴

父亲让两个孩子在后院玩耍,并让他们不要把身上搞脏。在玩的过程中,两个孩子都在额头上沾了泥。当孩子回来以后,父亲说“你们当中至少有一个人额头上有泥”,然后他问每一个孩子“你知道你额头上有泥吗?”同样的问题对每个孩子都问了两遍。假设每个孩子都可以看到对方的额头上有泥,但不能看见自己的额头,孩子们将会怎么回答?假设两个孩子都很诚实 并且都同时回答每一次提问。

先说答案,第一次回答不知道,第二次回答知道。

解释:假设两个孩子a,b.模拟一下其中一个孩子a的心理-按老爸说的话,要么一个有,要么我们都有。第一次问的时候,我看到b的额头有泥巴,但我不确定自己有没有,我只能说不知道。但第一次回答的时候我可以通过b的回答来确定我的头上有没有泥巴。如果他说知道,我头上肯定没有,而他头上有,如果他说不知道,那么他也像我一样,看到了我头上的泥巴。

所以第二次的时候我就知道我头上有泥巴了。


流氓与骑士

一个岛上住着两类人,骑士和流氓。骑士说的都是实话,而流氓只会说谎。你碰到两个人A和B,如果A说“B是骑士”,B说“我们两人不是一类人”。请判断两人到底是流氓还是骑士?

解答:枚举法,只有4种可能。

假设都是骑士。B说的是谎话,不成立。

假设A是骑士,B是流氓。A是说假话了,不成立。

假设A是流氓,B是骑士。A说真话了,不成立。

假设都是流氓,成立。

答案是都是流氓。


杀狗的问题

有一个院子,住着五十户人,每户人养只狗。

有一天,上面通知这个院子,说你们的狗有些得了病。

每个人都把自己的狗关在自己的房间里不许出去,主人能准确的知道别人的四十九只狗是否得病,但不能知道自己的是否得病。

主人不能外出讨论观察结果,一旦推理得知自己的狗得了病,就必须用枪在晚上打死自己的狗,不能打死别人的狗。第一天,无枪声,第二天,无枪声,第三天,一片枪声,请问得病的有几只狗?


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

B、假设有2条病狗,病狗的主人会看到有1条病狗,因为第一天没有听到枪响,是病狗数大于1,所以病狗的主人会知道自己的狗是病狗,因而第二天会有枪响。既然第二天也每有枪响,说明病狗数大于2。

由此推理,如果第三天枪响,则有3条病狗。


猜帽子问题

有一个牢房,有3个犯人关在其中。因为玻璃很厚,所以3个人只能互相看见,不能听到 对方说话的声音。” 有一天,国王想了一个办法,给他们每个人头上都戴了一顶帽子,只叫他们知道帽 子的颜色不是白的就是黑的,不叫他们知道自己所戴帽子的是什么颜色的。在这种情况 下,国王宣布两条如下:
1.谁能看到其他两个犯人戴的都是白帽子,就可以释放谁;
2.谁知道自己戴的是黑帽子,就释放谁。
其实,国王给他们戴的都是黑帽子。他们因为被绑,看不见自己罢了。于是他们3个 人互相盯着不说话。可是不久,心眼灵的A用推理的方法,认定自己戴的是黑帽子。您想 ,他是怎样推断的?


解答:假设你是A,你看到了神马?两顶黑,这说明不可能有人看到两顶白。再假设你带的是白,你的对手看到的会是神马?没错,一黑一白。
 那对手会怎么想呢?他会想,如果我带的也是白,另一个人不就看见两个白吗?他为什么不喊呢?说明我的不是白。这样,对手就先推断出自己带黑了——既然对手没有推断出来,嘿嘿,那就说明你的假设不成立啦~综上所述你带的不是白帽子是黑帽子




笔试面试体会

这几天参加了腾讯的实习生笔试+面试。还不知道结果,但有些小小的体会。

1.基础真心重要。不管是对于求职还是学习,数据结构,操作系统,组成原理,计算机网路,每一门课都需要很好的学习。

2.要有自己的方向。基础打好之后方向很重要,因为现在已经不是本科生,可以觉得什么有意思就去玩一下。现在可以自由学习的时间越来越少,只能是找准方向,然后不断去努力。

3.搞技术的,真的,除了努力,没别的法。

原创粉丝点击