用通配符分类卡片

时间:2011-05-24 14:19:36

标签: algorithm sorting

我正在编写一个纸牌游戏,我需要根据他们的排名对一堆卡片进行排序。这样他们就形成了无间隙的序列。 在这个特殊游戏中,值为2的卡可以用作外卡,例如卡

 2 3 5 

应该像这样排序

 3 2 5

因为2代替4,否则它将不是有效的序列。

然而卡

2 3 4

应该保持原样。

限制:只有一个'2'用作通配符。

2 2 3 4

也会保持原样,因为前2个会替换ACE(或1,无论你怎么称呼它)。

以下不是有效的输入序列,因为其中一个必须用作通配符,而不能用作通配符。那么就不可能构成无间隙的序列。

2 4 2 6

现在我很难弄清楚2是否用作通配符。一旦我得到了,我想我可以完成其余的排序

感谢有关此问题的任何算法帮助!

1 个答案:

答案 0 :(得分:4)

编辑以回应您对新要求的澄清:
你暗示你永远不会得到无法形成无间隙序列的数据。 (如果我能在现实世界中得到这样的保证。)所以:

  • 你有2个吗?
    • 不:你的序列必须已经无间隙。
    • 是的:你需要弄清楚把它放在哪里。
  • 对输入进行排序。你看到差距吗?由于您只能使用一个2作为通配符,因此最多只能有一个间隙。
    • 否:将2视为合法的二号。
    • 是:将2移动到间隙以填充它。

编辑以响应您的新要求:
在这种情况下,只需查看最高的单个间隙,如果有2个可用,请将其插入2.

原始答案:
由于您的序列必须是无间隙的,因此您可以计算您拥有的2的数量以及所有间隙的大小。然后填写你有足够数量2s的最高差距。