STL_算法(17)_排列组合 next_permutation() perv_permutation()
2016-08-17 07:55
501 查看
next_permutation()
prev_permutation()
#include<iostream>
#include<algorithm>
#include<vector>
// 排列组合开始之前一定要先排序
using namespace std;
int main()
{
vector<int> ivec;
ivec.push_back(1);
ivec.push_back(2);
ivec.push_back(3);
for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)
cout << *iter << ' ';
cout << endl;
//下一个排列组合 该算法返回值为bool 若返回值为true 说明还有下一个排列组合,但是若为fals 说明排列组合已经排列完了
next_permutation(ivec.begin(), ivec.end());
for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)
cout << *iter << ' ';
cout << 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;
cout << endl << endl;
cout << endl << endl;
vector<int> ivec2;
ivec2.push_back(3);
ivec2.push_back(2);
ivec2.push_back(1);
for (vector<int>::iterator iter = ivec2.begin(); iter != ivec2.end(); iter++)
cout << *iter; ' ';
cout << endl;
//ivec2 本身是个倒序
while (prev_permutation(ivec2.begin(), ivec2.end()))
{
for (vector<int>::iterator iter = ivec2.begin(); iter != ivec2.end(); iter++)
cout << *iter; ' ';
cout << endl;
}
//
system("pause");
return 0;
}
prev_permutation()
#include<iostream>
#include<algorithm>
#include<vector>
// 排列组合开始之前一定要先排序
using namespace std;
int main()
{
vector<int> ivec;
ivec.push_back(1);
ivec.push_back(2);
ivec.push_back(3);
for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)
cout << *iter << ' ';
cout << endl;
//下一个排列组合 该算法返回值为bool 若返回值为true 说明还有下一个排列组合,但是若为fals 说明排列组合已经排列完了
next_permutation(ivec.begin(), ivec.end());
for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++)
cout << *iter << ' ';
cout << 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;
cout << endl << endl;
cout << endl << endl;
vector<int> ivec2;
ivec2.push_back(3);
ivec2.push_back(2);
ivec2.push_back(1);
for (vector<int>::iterator iter = ivec2.begin(); iter != ivec2.end(); iter++)
cout << *iter; ' ';
cout << endl;
//ivec2 本身是个倒序
while (prev_permutation(ivec2.begin(), ivec2.end()))
{
for (vector<int>::iterator iter = ivec2.begin(); iter != ivec2.end(); iter++)
cout << *iter; ' ';
cout << endl;
}
//
system("pause");
return 0;
}
相关文章推荐
- STL源码——排列生成算法(next-permutation、pre-permutation)
- STL的排列算法next_permutation
- 蓝桥杯 - 算法提高 排列数 【STL-next_permutation求全排列】
- STL经典算法集锦<六>之排列(next_permutation/prev_permutation)
- STL经典算法集锦之排列(next_permutation/prev_permutation
- STL_算法_排列(prev_permutation、next_permutation)
- STL(next_permutation)poj 1833:排列
- HDOJ 1027 Ignatius and the Princess II(找出第m大排列,STL,next_permutation()函数的简单使用)
- stl算法:next_permutation剖析
- STL里面的next_permutation求字典序排列问题
- STL中用next_permutation解决排列问题
- STL 源码剖析 算法 stl_algo.h -- next_permutation
- NYOJ 19 擅长排列的小明 (STL之next_permutation()的使用)
- 【经典算法】STL之next_permutation be52 和prev_permutation
- stl全排列next_permutation()与prev_permutation()函数用法
- STL 排序算法之全排列sort和next_permutation
- stl算法:next_permutation剖析
- 排列问题算法-next_permutation,康托编码
- stl next_permutation的全排列原理及实现样例
- 全排列生成算法:next_permutation