2017-04-21 70 views
-3

我需要访问字符串中的字符组合的所有可能的号码的所有可能的数目。不使用任何循环,因为我必须以数千过滤记录。循环会导致性能问题。 让作为示例: 任何定制方法 ABCD === >> ABCD,ABDC,ACBD,ACDB,ADCB,BACD,BADC,BCAD,BCDA,BDAC,BDCA,CADB,CBDA,CDBA,CBAD, DABC,DBCA,DCBA,DCAB ......获取组合

在此先感谢

+2

你有没有尝试过什么人吗?如果可以,请告诉我们?或者这是一个“请为我做吧”的情况? – kaldoran

+1

有点低估。字符串字符可以重复,还是都是唯一的? – ovanes

+0

是亲爱的只有独一无二的,没有应该错过 – ajjjjjjjj

回答

0

有其实在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

+0

亲爱的请给自定义逻辑next_permutation ...无需内置功能 – ajjjjjjjj

+0

的试想一下,在**可能实现**这里:HTTP://en.cppreference。 COM/W/CPP /算法/ next_permutation – Jonas