C++库中有个很好用的函数,next_permutation用来将当前排列更改为全排列中的下一个排列
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL fact(LL n){
if(n==1) return 1;
return n*fact(n-1);
}
int main(){
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int n; cin>>n;
vector<int>v;
int cnt=1;
for(int i=1; i<=n; i++){
v.push_back(cnt); cnt++;
}
LL cs=fact(n);
for(int i=1; i<=cs; i++){
for(int j=0; j<n; j++){
cout<<v[j]<<" ";
}
cout<<endl;
next_permutation(v.begin(),v.end());
}
return 0;
}