纸牌游戏原理

1998年11月26日[1] 星期四 晴转小雨


电脑书《数据结构及其应用》第157页的纸牌游戏的算法,写成通俗的原理就是(此游戏是:有N张牌,打开第一张是1,拿走;然后把两张依次放在末尾,再打开上面一张,是2,再拿走;再把三张牌放到末尾,再打开上面一张 ...;求原来的牌是怎样的):把按1, 2, 3 ...顺序的牌按游戏规则拿出,那么拿出的牌一定不是按1, 2, 3 ...的。在第一张拿出的牌上[2]标记1,在第二张上记2,...。把牌按印刷的号码按1, 2, 3 ...排好,那么,你写的顺序就是所求顺序。
例如:9张牌,按升序拿走得到:148673925
然后画个表,上面的数是印刷的,下面是自己写的

牌上印的 1 4 8 6 7 3 9 2 5
手写的 1 2 3 4 5 6 7 8 9

上表告诉我们,印有A[3]的应该放在第1位,印有2的放在第4位,印有3的放在第8位...。所以所求顺序就是:186294537。看看A是第1位吗?2是第4位吗,3是第8位吗?对了。只要这样打开,就会变魔术似的翻出1, 2, 3 ...。
不过写成程序就不是那么简单了。


晚九时三十分


  1. 此处原文是“11月26日”(录入时备注)。 ↩

  2. 此处原文是“是”,应该是笔误(录入时备注)。 ↩

  3. 即扑克牌的ACE(录入时备注)。 ↩

你可能感兴趣的:(纸牌游戏原理)