我正在尝试解决一些 UVA 的问题,我想生成字符串数组的所有可能组合。例如 :
string str[]={"abcd","efg","hij"};
所以程序必须打印:
>abcd efg hij
>abcd hij efg
>hij abcd efg
>hij efg abcd
>efg abcd hij
>efg hij abcd
我正在尝试解决一些 UVA 的问题,我想生成字符串数组的所有可能组合。例如 :
string str[]={"abcd","efg","hij"};
所以程序必须打印:
>abcd efg hij
>abcd hij efg
>hij abcd efg
>hij efg abcd
>efg abcd hij
>efg hij abcd
我认为您正在寻找 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) );