主要是两个函数
第一个: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种情况