next_permutation:由原排列得到字典序中下一次最近排列
int main() {
int a[] = {1, 2, 3};
do {
cout << a[0] << " " << a[1] << " " << a[2] << endl;
} while (next_permutation(a, a + 3));
return 0;
}
/*1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1*/
prev_permutation:由原排列得到字典序中上一次最近排列
int main() {
int a[] = {3, 2, 1};
do {
cout << a[0] << " " << a[1] << " " << a[2] << endl;
} while (prev_permutation(a, a + 3));
return 0;
}
/*3 2 1
3 1 2
2 3 1
2 1 3
1 3 2
1 2 3*/