有几种算法可以打印字符串的所有组合,但我需要一种以特定顺序打印它们的算法。目前我使用的标准排列算法类似于这个问题的最佳答案(不是问题本身):C++ recursive permutation algorithm for strings -> not skipping duplicates
例如,对于输入“ABC”,输出将是:ABC ACB BAC BCA CAB CBA
对于输入“ACC”,它将是: ACC CAC CCA
输出都是正确的,但是我需要它们以不同的顺序。输入将仅包含字符“A”和“C”,为了方便起见,我在将字符串输入到递归函数之前按字母顺序对字符串进行排序,因此输入字符串将始终具有相同的字符(即 AACCC)。至于顺序,我想将“C”的集合视为一个单一的实体,我只将每个字符的排列集左移到第一个“C”的右侧。所以对于输入“ACC”,第一个输出是“ACC”,这是可以的,下一个输出应该是“CCA”,因为我将所有的'C'向左移动了一步,然后是所有字符的“CCA”的排列第一个“C”的右侧是最终输出,即“ACA”。
对于这些输入,我需要它看起来像这样:
输入:ACC
输出:ACC CCA CAC
输入:AACC
输出:
AACC ACCA ACAC CCAA CACA CAAC
知道我应该如何修改我的算法以按此顺序生成组合吗?