1.next_permutaton生成字典序全排列,要先将数组排序。
#include <algorithm>
#include <iostream>
using namespace std;
char c[3] = {'c','b','a'};
int main()
{
    sort(c, c+3);
    do{
        for(int i = 0; i < 3; i++) cout<<c[i]; cout<<endl;
    }while(next_permutation(c, c+3));
    return 0;
}
2.prev_permutation生成逆字典序排列
3.递归枚举
#include <iostream>
#include <cstring>
using namespace std;
char c[3] = {'c','b','a'};
int vis[3];
void dfs(int k, string s)
{
    if(k == 0){
        cout<<s<<endl;
        return;
    }
    for(int i = 0; i < 3; i++){
        if(!vis[i]){
            vis[i] = 1;
            dfs(k-1, s+c[i]);
            vis[i] = 0;
        }
    }
}
int main()
{
    memset(vis, 0, sizeof(vis));
    string temp;
    dfs(3, temp);
    return 0;
}