主要是两个函数
第一个:next_permutation 下一个序列
第二个:prev_permutation 上一个序列
next_permutation(下一个序列)
如果说 有{1, 2, 3},那么它的下一个序列就是{1, 3, 2}
其实也就是相当于数学中的排列组合
#include<iostream>
#include<algorithm>
#include<functional>
#include<vector>
using namespace std;
int main()
{
//1.下一个序列
vector<int> v1 = { 1, 2 ,3 };
next_permutation(v1.begin(), v1.end());
for (auto& v : v1)
{
cout << v << " ";
}
cout << endl;
vector<int> v2 = { 1, 2, 3, 4 };
int index = 0;
cout << "升序" << endl;
while (next_permutation(v2.begin(), v2.end()))
{
index++;
cout << "第" << index + 1 << "个序列" << endl;
copy(v2.begin(), v2.end(), ostream_iterator<int>(cout, " "));
cout << endl;
}
return 0;
}
prev_permutation(上一个序列)
跟那个next_permutation是相反的,如果有{3, 2 , 1},那么它的上一序列就是{3, 1, 2}
#include<iostream>
#include<algorithm>
#include<functional>
#include<vector>
using namespace std;
int main()
{
//1.下一个序列
vector<int> v1 = {3, 2, 1};
prev_permutation(v1.begin(), v1.end());
for (auto& v : v1)
{
cout << v << " ";
}
cout << endl;
vector<int> v2 = {4, 3, 2, 1};
int index = 0;
cout << "降序" << endl;
while (prev_permutation(v2.begin(), v2.end()))
{
index++;
cout << "第" << index + 1 << "个序列" << endl;
copy(v2.begin(), v2.end(), ostream_iterator<int>(cout, " "));
cout << endl;
}
return 0;
}
、
其实也当于数学中的排列组合,用数学公式算A(4 4)的全排列,也是24种情况