C++ 全排列函数next_permutation
有时候要用到全排列 next_permutation
进行枚举
<algorithm>
std::next_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp)
std::next_permutation(BidirectionalIterator first, BidirectionalIterator last )
实例1:
字典序降序全排列
int num[3] = {1,2,3};//升序 do{ cout << num[0] << " " << num[1] << " " << num[2] << endl; }while(next_permutation(num,num+3));
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
实例2:
字典序升序全排列
#include <iostream> #include <algorithm> using namespace std; const int INF = 0x3f3f3f3f; const int MAXN = 100 + 1; int n; long long L[MAXN]; int main(){ ios::sync_with_stdio(false); int num[3] = {3,2,1};//降序排列 do{ cout << num[0] << " " << num[1] << " " << num[2] << endl; }while(next_permutation(num,num+3,greater<int>())); return 0; }
3 2 1 3 1 2 2 3 1 2 1 3 1 3 2 1 2 3