微软面试题:五个囚犯抓绿豆

一、题目描述

5个囚犯,分别按1-5号在装有100颗绿豆的麻袋抓绿豆,规定每人至少抓一颗,而抓得最多和最少的人将被处死,而且,他们之间不能交流,但在抓的时候,可以摸出剩下的豆子数。问他们中谁的存活几率最大?
提示
(1)他们都是很聪明的人
(2)他们的原则是先求保命,再去多杀人
(3)100颗不必都分完
(4)若有重复的情况,则也算最大或最小,一并处死

二、题目分析

(1)分别按1-5号在装有100颗绿豆的麻袋抓绿豆
每个囚犯被编号为1,2,3,4,5,按照顺序依次从麻袋里面抓绿豆,也就是依次只有一个人在麻袋中抓绿豆。否则,他们就有可能交流,甚至可能出现无法摸出剩下豆子数的可能。
(2)每人至少抓一颗
直接说明就是,5个人从95颗豆子中随意选择。(此处写95是为了后面的逻辑推理)
(3)他们都是聪明人
说白了就是知道怎么才能使自己活下来的可能性最大,只要有希望就会去争取(马云说过,希望还是要有的,万一实现了)。
(4)他们的原则是先求保命,再去多杀人
也就是只要能在活下来的前提下,能杀死几个就杀死几个(哈哈,穷凶极恶啊)
(5)提示中的“若有重复的情况,则也算最大或最小,一并处死”
结合题目,处死条件为:抓取豆子数最多者、最少者、重复者
(6)问他们中谁的存活几率最大?
从这个问题剖析,可以了解到:没有绝对的生还者,每个人的生死都相互关联,是个概率问题

三、逻辑推理

(1)首先由1号抓取豆子,能抓取的豆子数从0到95(以下括号里的数分别对应几号抓取的都字数,如(85-1-2-3-4)对应1号抓取85个,2号抓取1个… …):
(95-0-0-0-0),没人活下来。
(94-1-0-0-0),2号苟且偷生了
(93-2-0-0-0),此时1号抓完只剩2个了,2号会全部抓取,既能让自己活下来,又能杀死其他所有人。
同样的道理,直到(48-47-0-0-0)
(2)1号表示,怎么选都是死,还便宜2号这个小婊砸,不行。此刻,1号又开始想如果自己抓47个,那么2号肯定不会去把剩下的全抓了,2号没这么伟大,牺牲自己,保全我,那么他只会选的比我少(0-46个)(47-(0-46)-0-0-0)(提示,此时还剩下48个)。
此时,二号开始高兴了,这决策权终于落到我手上了,有1号这个垫底的,怎么才能保证绝对安全了?其实很简单,只要取走超过剩下的一半就绝对安全了(25-46)。但是了,2号阴暗的一面表现出来了——我要弄死最多的人,所以他会取走46颗豆子,剩下的2颗必然落在3号手上(豆子越少,留给后面的人的选择机会就越少,‘挺现实的’)。
此时豆子分配(47-46-2-0-0)
1号怎么会同意这种情况发生。此时,他也洞悉了2号的小心思。依照这种推导。如果我选择32个,2号必然选择31个,剩下了32个。
此时我们的3号登场,3号一看,不能抓的比前面的多,呵呵,那就只能拿后面的人开刀了。3号常年受到2号的影响,也出现了阴暗的心理,拿走了30个,留下2个给四号。
此时豆子分配(32-31-30-2-0)
(3)1号表示,怎么还是难逃一死,不行不行,还得想想。灵机一动,他也发现3号不会选的比2号多,如果自己在少抓一些,让四号的决策权流动到5号,让5号做决策会怎么样了?
说干就干,抓取了21颗豆子(通过减少自己的豆子,让四号丧失决策的权利),后面纷纷效仿,结果就是(21-20-19-18-17)。
哎,1号表示命苦啊,豆子也没得多的了。
咦!哈哈哈,1号惊讶的发现,如果自己选的豆子数大于等于21会死,如果小于17也会死,那不行,那就只能在20,19,18,17当中选择了。同时,我选择的数量也决定了2号3号4号选择的数量,那我全且吧豆子分成5堆吧分别是21-20-19-18-17。

归纳:1号选择过的豆子数,其他人都不会选择。逆向思考一下就很容易推出来。

四、概率分析

(1)选择21,必死无疑
(2)选择20,则2号3号4号会选择19-18-17
(3)选择19,则2号3号4号会选择20-18-17
(4)选择18,则2号3号4号会选择20-19-17
(5)选择17,则2号3号4号会选择20-19-18
剩下的21颗肯定留给了5号,可见5号无论如何都会面临着死忙。嗯,既然你要非死不可,那就满足你最后的愿望吧——选一个人陪你共赴黄泉(哈哈,前面4位像不像领导)。
领导们岂是吃素的。
1号心里嘀咕:5号可以选21颗、20颗、19颗,18颗,17颗以及0-16颗共6个选择(选择0-16颗结果都一样,当做同一个选择)
如果1号选择20颗,那就只有期盼5号选择21颗,生存率只有1/6
如果1号选择19颗,那就只有5号选择19颗的时候,我才会牺牲,生存率5/6
如果1号选择18颗,那就只有5号选择18颗的时候,我才会牺牲,生存率5/6
如果1号选择17颗,那就只有5号选择小于17颗的时候,我才能活下去,生存率1/6

五、分析结果

领导表示,生命如此可贵,岂能冒大风险。所以1号的生存率为5/6,还有的选啊。2号的生存率为5/6,3号的生存率为1/6,4号的生存率为1/6。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 数仓分层理论是数据仓库设计中的一个重要概念。根据数据仓库的目标和使用需求,数据仓库可以划分为不同的层次。常见的数仓分层理论包括三层架构和四层架构。 三层架构包括原子层、集成层和应用层。原子层是数据仓库中最底层的层次,负责采集和存储原始数据。集成层是在原子层的基础上进行数据清洗、整合和转换,使得数据能够被应用层使用。应用层是最上层的层次,提供给用户各种报表、分析和决策支持的功能。 四层架构在三层架构的基础上增加了数据存储层。数据存储层是为了提高数据查询和分析的性能而引入的,通常使用列式存储或者索引技术来优化数据的存储和访问。 数仓分层理论的目的是将数据仓库的功能和需求进行划分,使得数据仓库的设计更加灵活和可扩展。不同层次的数据可以根据需要进行更新和维护,同时也方便用户根据自己的需求进行数据查询和分析。数仓分层理论在数据仓库的设计和实施中起到了重要的指导作用。\[2\]\[3\] #### 引用[.reference_title] - *1* [大数据面试题--数仓](https://blog.csdn.net/weixin_42759988/article/details/123074673)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [原创|3万字剖析数仓面试题,珍藏版](https://blog.csdn.net/huzechen/article/details/123288181)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值