扑克牌的计算
发布时间
阅读量:
阅读量
我目前掌握着一组扑克牌,但观众并不知晓其排列顺序。
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)
还没有任何评论哟~
