ユーザーに提示する必要のある順序付けられた文字列があります。
ABCCDDCBBBCBBDDBCAAA
'B'で表されるオブジェクトにはタグが付けられ、2つのBの後に'〜'が付きます。
AB~CCDDCB~BBCBBDDBCAAA
AB~CCDDCBB~BCBBDDBCAAA
AB~CCDDCBBB~CBBDDBCAAA
and so on...
私はハワード・ヒナントの組み合わせライブラリを使用しましたが、この単純なケースでうまく機能します。私のテストコードは、for_each_combinationを介して送信されたintとして場所のベクトルを使用します。
ただし、Bに複数のタグがある場合はどうすればよいかわかりません。
たとえば、合計4Bにタグを付ける必要があります。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の後、結果の組み合わせごとに、1つおきの場所を別のベクトルにコピーし、別のfor_each_combinationを実行します。
使用する組み合わせの数を考えると、もっと良い方法があることを願っています。