函数原型
#include <algorthm> next_permutation(start, end);
排列数组
例子:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[5] = {1, 2, 3, 4, 5};
cout << "demo01" << endl;
do
{
cout << a[0] << a[1] << a[2] << a[3] << a[4] << endl;
}
while(next_permutation(a, a + 5));
puts("");
do
{
cout << a[0] << a[1] << a[2] << a[3] << a[4] << endl;
}
while(next_permutation(a, a + 4));
cout << "demo02" << endl;
do
{
cout << a[0] << a[1] << a[2] << endl;
}
while(next_permutation(a, a + 3));
puts("");
do
{
cout << a[0] << a[1] << a[2] << endl;
}
while(next_permutation(a, a + 2));
return 0;
}
如demo01 每次输出a0 - a4也就是全部输出其中是否排列取决于 permutation 的end值 + 多少
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[5] = {1, 2, 3, 4, 5};
cout << "demo01" << endl;
do
{
cout << a[0] << a[1] << a[2] << a[3] << a[4] << endl;
}
while(prev_permutation(a, a + 5));
puts("");
do
{
cout << a[0] << a[1] << a[2] << a[3] << a[4] << endl;
}
while(prev_permutation(a, a + 4));
cout << "demo02" << endl;
do
{
cout << a[0] << a[1] << a[2] << endl;
}
while(prev_permutation(a, a + 3));
puts("");
do
{
cout << a[0] << a[1] << a[2] << endl;
}
while(prev_permutation(a, a + 2));
return 0;
}
使用 prev_permutation 就会降序排列了