我有一个有序的字符串,需要呈现给用户:
ABCCDDCBBBCBBDDBCAAA
用“B”表示的对象被标记,这样 2 个 B 后面会有一个“~”。
AB~CCDDCB~BBCBBDDBCAAA
AB~CCDDCBB~BCBBDDBCAAA
AB~CCDDCBBB~CBBDDBCAAA
and so on...
我使用了Howard Hinnant 的组合库,它适用于这个简单的案例。我的测试代码使用位置向量作为通过 for_each_combination 发送的整数。
但是,当我有多个 B 标记时,我不知道该怎么做。
例如,总共 4Bs 需要标记,2 由 '~' 和 2 由 '#'
AB~CCDDCB~B#B#CBBDDBCAAA
AB#CCDDCB~B~B#CBBDDBCAAA
AB~CCDDCB#B~B#CBBDDBCAAA
AB#CCDDCB#B~B~CBBDDBCAAA
ABCCDDCB~B~B#CB#BDDBCAAA
and so on...
我写的伪代码是级联的。在第一个 for_each_combination 之后,对于每个结果组合,将每隔一个位置复制到另一个向量并执行另一个 for_each_combination。
考虑到我将使用的组合数量,我希望有更好的方法。