关于排列问题,STL库给我们提供了两个函数,next_permutation与prev_permutation,使用两个参数:数组起始位置和结束位置,每执行一次就获得这个数组下一个的全排列或上一个全排列。
注意:当该序列是字典序最大时,使用next_permutation函数会返回flase,否则返回true。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<int> a;
int n;
cin >> n;
for( int i = 1 ; i <= n ; i++ )
{
a.push_back(i);
}
next_permutation(a.begin(),a.end());
for( int i = 0 ; i < a.size() ; i++ )
{
cout << a[i] << " ";
}
return 0;
}
复杂度为O(n)。