获取所有可能的组合数

时间:2017-04-21 10:00:58

标签: c++ objective-c c

我需要访问字符串中所有可能数量的字符组合。没有使用Any循环,因为我必须过滤数千个记录。循环可以给出性能问题。 让我们举一个例子:  任何自定义方法 ABCD ===>> ABCD,ABDC,ACBD,ACDB,ADCB,BACD,BADC,BCAD,BCDA,BDAC,BDCA,CADB,CBDA,CDBA,CBAD,DABC,DBCA,DCBA,DCAB ......

先谢谢

1 个答案:

答案 0 :(得分:1)

事实上,C ++标准库中有一个函数:std::next_permutation。以下是链接中的示例,适用于您的情况。

#include <algorithm>
#include <string>
#include <iostream>

int main()
{
    std::string s = "ABCD";
    std::sort(s.begin(), s.end());
    do
    {
        std::cout << s << '\n';
    }
    while(std::next_permutation(s.begin(), s.end()));
}

在线here