使用C++ STL的next_permutation函数可以简单的枚举出一个升序排列的字符串的全排列,它包含在头文件<algorithm>里。
用C类型字符串举一个例子:
int main() {
char str[] = "321";
int len = strlen(str);
sort(str, str + len);
puts(str);
while(next_permutation(str, str + len)) {
puts(str);
}
return 0;
}
另外,prev_permutation函数可以枚举出一个降序排列的字符串的全排列。
为了使字符串更方便的被降序排列,我们引入:
sort(arr, arr + size, greater<int>());
用以上的方式可以将int类型数组arr降序排列,同理可以使用在字符串上。
所以:
int main() {
char str[] = "132";
sort(str, str + strlen(str), greater<int>());
while(prev_permutation(str, str + strlen(str)))
puts(str);
return 0;
}