• 一个有趣的题目


    有100个囚犯,监狱长想玩一个囚徒释放的游戏,在一个封闭的房间里放着一排张卡片,卡片反面都一样,正面写了每个人的名字,总共100张。

    囚犯依次进入房间,每人最多翻50张卡片。如果翻开的卡片号码与自己的名字一致,那么这个囚犯就成功了。当且仅当所有的囚犯成功,大家才能被释放。

    为了能够成功逃脱,囚犯们在玩游戏之前可以一起商量选卡片的策略?


    注意:

    1.囚犯依次进房间,进房间时以及进房间前后,都不能互相交流,包括什么暗示什么的都不能。

    2.不能做任何记号,不允许把卡片拿出来或互换位置,哪怕是自己的号码。

    3.每个囚犯进房间的时候,房间的布置是一模一样的。

     
     
     结论:概率约为 0.31183 。(推广到人数为n ,概率不低于 0.3 )
     策略:置换群+不相交循环。
     该题目改编自:100 prisoners problem   思路为:https://www.zhihu.com/question/27050108
     
    囚徒们提前商量编号,问题就转换了。以6个抽屉为例:
    6个抽屉里的号码随机排序有6!=720种
    能够正确的排序种类有如下几种情况:
    1、所有6个号码对位(只有123456)=============1种情况
    2、其中任意4个号码对位,另2个互换位置(比如123465)==C(6,4)=15种情况
    3、其中任意3个号码对位,另3个互换位置(比如123564)==C(6,3)*2=40种情况
    4、其中任意2个号码对位,另4个两两互换位置(比如124365)==C(6,2)*C(4,2)/2=45种情况
    5、其中任意1个号码对位,另外任意两个互换位置,其余三个互换位置(比如132564)==C(6,1)*C(5,2)*2=120种情况
    6、没有号码对位,分成两组,每组3个号码互换位置(比如231564)==C(6,3)/A(2,2)*2*2=40种情况
    7、没有号码对位,分成三组,每组2个号码互换位置(比如214365)==C(6,2)*C(4,2)/A(3,3)=15种情况
    共计:1+15+40+45+120+40+15=276种
    成功的概率为276/720=23/60
     
    因此100个也就是
    情况1、循环长度为51数:A(100,49)*50!=100!/51!*50!=100!/51
    情况2、循环长度为52数:A(100,48)*51!=100!/52!*51!=100!/52
    情况3、循环长度为53数:100!/53
    .......
    情况50、循环长度为100数:100!/100
    共计100!/51+100!/52+100!/53+.......+100!/100
    即100!-(100!/51+100!/52+100!/53+.......+100!/100)能完成。
    概率为1-1/51-1/52-1/53-......-1/100=0.311827821
     
    amazing!!! (例子源于:真正傲雪冰寒
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    LeetCode 189. Rotate Array
    LeetCode 965. Univalued Binary Tree
    LeetCode 111. Minimum Depth of Binary Tree
    LeetCode 104. Maximum Depth of Binary Tree
    Windows下MySQL的安装与配置
    LeetCode 58. Length of Last Word
    LeetCode 41. First Missing Positive
    LeetCode 283. Move Zeroes
    《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践》读后感
    删除docker下的镜像
  • 原文地址:https://www.cnblogs.com/ISGuXing/p/9807133.html
Copyright © 2020-2023  润新知