配列要素の完全な配列(2つのスタイル)
//两种方式的模板:
do{
//输出函数
}while(next_premutation());//默认从小到大排
do{
//输出函数
}while(perv_premutation());//默认从大到小排序
//特定のコードは以下の通りです
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
vector<int>p;
vector<int>p1;
vector<int>::iterator it;
for(int i=0;i<n;i++)
{
p.push_back(rand()%10000+1);
}
cout<<"原数列为"<<endl;
sort(p.begin(),p.end());
for(it=p.begin();it!=p.end();++it) cout<<*it<<" ";
cout<<endl<<endl;
cout<<"升序下的全排列为"<<endl;
do
{
for(it=p.begin();it!=p.end();++it) cout<<*it<<" ";
cout<<endl;
}while(next_permutation(p.begin(),p.end()));
cout<<endl;
cout<<"降序下的全排列为"<<endl;
for(it=p.end();it!=p.begin();) p1.push_back(*(--it));
do
{
for(it=p1.begin();it!=p1.end();++it) cout<<*it<<" ";
cout<<endl;
}while(prev_permutation(p1.begin(),p1.end()));
return 0;
}