排列组合
- 排列组合前的数据必须先排序。
next_permutation()
:原始数据为升序,从小到大排列prev_permutation()
:原始数据为降序,从大到小排列- 函数返回值为
false
:所有排列组合都已经排完
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> ivec;
ivec.push_back(1);
ivec.push_back(2);
ivec.push_back(3);
cout << "ivec原始数据:" << endl;
for (vector<int>::iterator iter = ivec.begin();
iter != ivec.end(); ++iter)
cout << *iter << ' ';
cout << endl;
cout << "ivec1排列组合数据:" << endl;
while (next_permutation(ivec.begin(), ivec.end()))
{
for (vector<int>::iterator iter = ivec.begin();
iter != ivec.end(); ++iter)
cout << *iter << ' ';
cout << endl;
}
cout << endl << endl;
vector<int> ivec2;
ivec2.push_back(3);
ivec2.push_back(2);
ivec2.push_back(1);
cout << "ivec2原始数据:" << endl;
for (vector<int>::iterator iter = ivec2.begin();
iter != ivec2.end(); ++iter)
cout << *iter << ' ';
cout << endl;
cout << "ivec2排列组合数据:" << endl;
while (prev_permutation(ivec2.begin(), ivec2.end()))
{
for (vector<int>::iterator iter = ivec2.begin();
iter != ivec2.end(); ++iter)
cout << *iter << ' ';
cout << endl;
}
return 0;
}