sort():不赘述
next_permutation():
#include <algorithm>
bool next_permutation(iterator start,iterator end);
参数:
start为第一个元素下标,end为最后一个元素下标的下一位置(与sort同)。
返回值:
当当前序列不存在下一个排列时,函数返回false,否则返回true。
作用:
按字典序(ASCII)求该内存区间的下一个全排列,存储在该段内存上。所谓的下一个,严格来讲,就是对于当前序列pn,他的下一个序列pn+1满足"不存在另外的序列pm,使pn<pm<pn+1"。
另外:
还可通过编写cmp函数或重载运算符的形式,从而①改变其全排列的方向;②对结构体进行全排列。
示例:
按字典序输出“abc”的所有可能组合
#include <cstdio>
#include <algorithm>
#include <cstring>
#define MAXSIZE 10
using namespace std;
int main(){
char str[MAXSIZE];
int len;
scanf("%s",str);
len=strlen(str);
do{
printf("%s\n",str);
}while (next_permutation(str,str+len));
printf("\n");
return true;
}
prev_permutation(start,end)同理。