文字列のすべての組み合わせを出力するアルゴリズムはいくつかありますが、特定の順序で出力するアルゴリズムが必要です。現在、この質問の一番上の回答(質問自体ではない)にあるものと同様の標準的な順列アルゴリズムを使用しています:文字列のC++再帰順列アルゴリズム->重複をスキップしない
たとえば、入力「ABC」の場合、出力は次のようになります。 ABC ACB BAC BCA CAB CBA
入力「ACC」の場合、次のようになります。 ACC CAC CCA
出力はすべて正しいですが、別の順序で必要です。入力は文字 'A' と 'C' のみで構成され、再帰関数に入力する前に文字列をアルファベット順に並べ替えているので、入力文字列は常に同じ文字 (つまり AACCC) になります。順序に関しては、「C」のコレクションを単一のエンティティとして扱いたいと思います。これは、最初の「C」の右側にある文字の順列のセットごとに左にシフトします。したがって、入力「ACC」の場合、最初の出力は「ACC」で問題ありません。すべての「C」を 1 ステップ左にシフトしたため、次の出力は「CCA」である必要があります。次に、すべての文字の「CCA」の順列最初の「C」の右側は最終出力で、「ACA」です。
これらの入力については、次のようにする必要があります。
入力: ACC
出力: ACC CCA CAC
入力: AACC
出力:
AACC ACCA ACAC CCAA CACA CAAC
この順序で組み合わせを生成するためにアルゴリズムを変更する方法はありますか?