Advertisement

扑克牌的计算

阅读量:

我目前掌握着一组扑克牌,但观众并不知晓其排列顺序。

1、首先,我从牌堆顶部抽取一张牌,将其放置于桌面上。

2、其次,再次从顶部取出一张牌,并将其置于手中剩余牌的底部。

3、随后,持续重复上述第一步与第二步的操作,直至所有手中的牌均被放置在桌面上。

最终,观众能够观察到桌面上的牌序为:(牌底部)1,2,3,4,5,6,7,8,9,10,11,12,13(牌顶部)

请问,我最初手中的牌顺序是怎样的?

听到这个问题时,着实让我感到惊讶。如今的面试题目竟已如此复杂。坦白讲,若是我身处其中,恐怕也难以当场给出答案!

接下来的一段时间内,通过手动模拟与程序调试,我才终于解决了这个问题。

先简要说明我的思路:

你手中共有13张牌,在每次将一张牌放到桌面时,还需将手牌最上方的一张移动至手牌末尾。由此可推断出这一过程可通过循环操作完成共13次循环。在每一次循环中执行两个动作:

1、首先将手牌最上方的一张置于桌面。

2、然后将手牌最上方的一张移至手牌的末尾。

上述过程可称为正向操作,即从手中到桌面的过程。

而本题的关键在于已知桌面结果的前提下推导初始的手中顺序。因此需要对上述操作进行反向处理,即从桌面回到手中。这一方法被称为反向操作或时间反演法:

正向过程:手 → 桌子

1→2→3→4

2→3→4 1

3→4 2 1

4→2 3 1

2→4 3 1

4 2→3

全部评论 (0)

还没有任何评论哟~