我正在编写一个纸牌游戏,我需要根据他们的排名对一堆卡片进行排序。这样他们就形成了无间隙的序列。 在这个特殊游戏中,值为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是否用作通配符。一旦我得到了,我想我可以完成其余的排序
感谢有关此问题的任何算法帮助!
答案 0 :(得分:4)
编辑以回应您对新要求的澄清:
你暗示你永远不会得到无法形成无间隙序列的数据。 (如果我能在现实世界中得到这样的保证。)所以:
编辑以响应您的新要求:
在这种情况下,只需查看最高的单个间隙,如果有2个可用,请将其插入2.
原始答案:
由于您的序列必须是无间隙的,因此您可以计算您拥有的2的数量以及所有间隙的大小。然后填写你有足够数量2s的最高差距。