用通配符对卡片进行排序

问题描述

| 我正在编写纸牌游戏,我需要按其等级对一叠纸牌进行排序。使它们形成一个无间隙的序列。 在此特殊游戏中,值2的卡可以用作通配卡,例如
 2 3 5 
应该像这样排序
 3 2 5
因为2取代了4,否则将不是有效的序列。 但是卡
2 3 4
应该保持原样。 限制:只能使用一个\'2 \'作为通配符。
2 2 3 4
也会保持原样,因为前2个将替换ACE(或1,无论您叫什么)。 以下内容将不是有效的输入序列,因为必须将2之一用作通配符,而不能将其用作通配符。这样就不可能构成一个无缝的序列。
2 4 2 6
现在我很难弄清楚是否将2用作通配符。一旦知道了,我想我就可以完成其余的排序 感谢您提供有关此问题的算法帮助!     

解决方法

根据您对新要求的说明进行编辑: 您的意思是,您永远不会获得无法形成完整序列的数据。 (如果我能在现实世界中获得这样的保证。) 你有2吗? 否:您的顺序必须已经毫无间隙。 是:您需要弄清楚放置位置。 对您的输入进行排序。你看到差距了吗?由于只能将1用作通配符,因此最多可以有一个空格。 否:将2视为合法的第二。 是:将2移动到空白处以进行填充。 根据您的新要求进行编辑: 在这种情况下,只需寻找最大的单个间隙,如果有2个可用间隙,则将其插入2个间隙。 原始答案: 由于您的序列必须是无间隙的,因此您可以算出2的数目以及所有存在的间隙的大小。然后,仅填写您有足够2s的最大间隙。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...