https://blog.csdn.net/m0_37890541/article/details/105104045
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 6;
char arr[MAXN];
int main ()
{
while (cin >> arr) {
sort(arr, arr + strlen(arr)); // 输入字符串先按升序排好
cout << arr << endl;
while (next_permutation(arr, arr + strlen(arr))) { // 求全排列
cout << arr << endl;
}
cout << endl;
}
return 0;
}
例:
输入:abc
输出:abc acb bac bca cab cba // 偷懒~~未换行
“下一次排序”:在字典次序中,当前排列的下一个排列,比如:{a,b,c,d}的下一次排序为{a,b,d,c}
“上一次排序”:在字典次序中,当前排列的上一个排列,比如:{a,b,d,c}的下一次排序为{a,b,c,d}
bool next_permutation(begin, end) // 函数会改变[begin,end)区间内元素次序,使它们符合"下一次排列次序",默认为按字典次序升序
bool next_permutation(begin, end, op) // op为自定义排列次序
bool prev_permutation(begin, end) // 函数会改变[begin,end)区间内元素次序,使它们符合"上一次排列次序",默认为按字典次序升序
bool prev_permutation(begin, end, op) // op为自定义排列次序