把牌分成两堆,让每堆面朝上的牌数目相同

面试题:在一个黑暗的房间,有人塞给你一叠牌,有 N 张面朝上,其余的面朝下。你看不见牌,怎样才能把牌分成两堆,让每堆面朝上的牌数目相同呢?

求答案及详细推理过程。

先数出 N 张牌,并将其翻转,剩下的是另一堆。这两堆牌中,面朝上的牌数目相同。
推理过程:
这道谜题流行于摩根大通。现在,你可以说拿出手机来照亮,显然是合乎情理的。但事实上,这道谜题的出现时间早于手机,可以不用看牌就解决。或许可以从观察以下这些项目入手:
● 任意把牌分成两等份的做法行不通,除非你运气超级好。所有面朝上的牌都可能分在同一堆里。
● 问题中并未要求两堆牌要相等,它只要求面朝上的牌数目相等。
● 你可以翻转牌面。当然,你无法判断所翻的牌是面朝上还是面朝下。
预期的答案是这样:你从这叠牌的最上面数出 N 张牌,并将其翻转。这就是一堆,桌上剩余的牌是另一堆。
以下是它的运作原理。你数出的 N 张牌里会有任意数目的牌面朝上,从 0 到 N 都有可能。假设翻转之前有 f 张面朝上的牌,翻转会使每一张面朝上的牌面朝下,而面朝下的牌变成面朝上。因此,翻转之后,这堆牌里有 N - f 张面朝上的牌。在桌上剩下的另一堆牌里,也有( N - f )张面朝上的牌。因此,与你刚才翻转的那堆牌里面朝上的牌数目相等。

    原文作者:魔术师发牌问题
    原文地址: https://blog.csdn.net/u011643312/article/details/53012025
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞