1、用permutation枚举排列
(1) 对于数组a(假设从下标0开始)
可用next_permutation(a+0, a+n)向后取一个排列
可用prev_permutation(a+0, a+n)向前取一个排列
(2) 对于字符串s:
next_permutation(s.begin(), s.end());
prev_permutation(s.begin(), s.end());
2、枚举全排列的方法
(1)用do{ ... }while(next_permutation(a+0,a+n)); 从小到大向后枚举排列,
(2)用do{ ... }while(prev_permutation(a+0,a+n)); 从大到小向前枚举排列
3、用sort设置数组a为最小排列和最大排列
sort(a+0,a+n); //最小排列
sort(a+0,a+n,greater<int>()); //最大排列
4、【例题】从小到大向后枚举数组a的所有排列
sort(a+0,a+n); //设置当前排列为最小排列
do
{
for (int i = 0; i <= n-1; i++) { //输出当前排列
cout<<a[i];
}
cout<<endl;
} while (next_permutation(a + 0, a + n)); //向后枚举后面的排列