枚举法: 循环枚举、排列枚举、子集枚举
(1)next_permutation:下一个排列(从小到大向后枚举排列)
(2)prev_permutation:上一个排列(从大到小向前枚举排列)
【参考代码】从小到大向后枚举数组a的全排列
sort(a+1,a+n+1); //首先设置为最小排列
do
{
for (int i = 1; i<=n; i++) { //输出当前排列
cout<<a[i];
}
cout<<endl;
} while (next_permutation(a + 1, a + n + 1)); //向后枚举后面的排列
字符串s的下一个排列:next_permutation(s.begin(), s.end());