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;
}