该函数定义在#include<algorithm>
头文件中
函数模板:
- next_permutation(arr, arr + size); 当有下一个较大值返回 1 , 否则返回 0 ;
- prev_permutation(arr, arr + size); 当有下一个较小值返回 1 , 否则返回 0;
解释: arr为数组, size为数组长度; 按字典序比大小.
int arr2[] = {3, 2, 1};
cout<<"用prev_permutation对3 2 1的全排列"<<endl;
do {
cout << arr2[0] << ' ' << arr2[1] << ' ' << arr2[2]<<'\n';
} while ( prev_permutation(arr2, arr2 + 3) ); //每运行一次函数,会交换顺序
/*
用prev_permutation对3 2 1的全排列
3 2 1
3 1 2
2 3 1
2 1 3
1 3 2
1 2 3
*/
int arr1[] = {1, 2, 3};
cout<<"用next_permutation对1 2 3的全排列"<<endl;
do {
cout << arr1[0] << ' ' << arr1[1] << ' ' << arr1[2] <<'\n';
} while ( next_permutation(arr1, arr1 + 3) ); //每运行一次函数,会交换顺序
/*
用next_permutation对1 2 3的全排列
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
*/