我正在尝试解决一些UVA的问题,我想生成一个字符串数组的所有可能组合。例如:
string str[]={"abcd","efg","hij"};
所以程序必须打印:
>abcd efg hij
>abcd hij efg
>hij abcd efg
>hij efg abcd
>efg abcd hij
>efg hij abcd
答案 0 :(得分:1)
我认为您正在寻找STL的next_permutation算法。
应用于您的示例,它应该如下所示:
std::sort (str, str+3);
std::cout << "The 3! possible permutations with 3 elements:\n";
do {
std::cout << str[0] << ' ' << str[1] << ' ' << str[2] << '\n';
} while ( std::next_permutation(str, str+3) );