全排列函数:nest_permutation函数,和prev_permutation函数
1.next_permutation函数定义:next_permutation(start, end, cmp)
2.prev_permutation函数定义:prev_permutation(start, end, cmp)
3.全排列函数的头文件保存在#include <algorithm>头文件中。
4.next_permutation函数用于全排列时,元素必须都以从小到大的升序形式进行排列。
而prev_permutation函数用于全排列时,元素必须都以从大到小的降序形式进行排列。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int arr[3] = {1, 2, 3};
do
{
cout << arr[0] << ' ' << arr[1] << ' ' << arr[2] <<'\n';
}while (next_permutation(arr, arr + 3));
system("pause");
return 0;
}
其结果为:
但当把while (next_permutation(arr, arr + 3))改为while (next_permutation(arr, arr + 时)),结果就变成了
由此可以引出:
1.next_permutation(num, num + n), n表示为对n个元素进行排序
2.当使用next_permutation 函数时 int arr[3]中的元素必须都是以从小到大的升序形式排列,但是亦可以通过cmp传参来改变int arr[3]中的元素是否是以升序或降序的形式排列
例如:
#include <iostream>
#include <algorithm>
using namespace std;
bool compare(int a, int b)//通过给cmp传参改变arr[3]中元素的排列方式
{
return a > b;
}
int main()
{
int arr[3] = {3, 2, 1};
do
{
cout << arr[0] << ' ' << arr[1] << ' ' << arr[2] <<'\n';
}while (next_permutation(arr, arr + 3, compare));
system("pause");
return 0;
}
注意:全排列函数一般于sort函数一起使用,使元素按从小到大或从从大到小的顺序排列。