#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool next_permutate(vector<int>::iterator first,vector<int>::iterator last){
if(first == last)
return false;
auto i = first;
if(++i == last)
return false;
i = last;
--i;
for (;;){
auto ii = i;
--i;
if(*i < *ii){
auto j = last;
while(!(*i < *--j))
;
iter_swap(i, j);
reverse(ii, last);
return true;
}
if(i == first){
reverse(first, last);
return false;
}
}
}
void output(const vector<vector<int>> &res){
for(const auto &row : res){
for(auto col : row){
cout << col << " ";
}
cout << endl;
}
}
int main(){
int n;
vector<int> nums;
vector<vector<int>> res;
cout << "请输入数组元素的个数" << endl;
cin >> n;
int num;
while(n--)
{
cin >> num;
nums.push_back(num);
}
sort(nums.begin(), nums.end());
res.push_back(nums);
while(next_permutate(nums.begin(),nums.end())){
res.push_back(nums);
}
output(res);
return 0;
}
具体原文解析在这里 https://blog.csdn.net/c18219227162/article/details/50301513