#include<bits/stdc++.h>
using namespace std;
int n,a[101];
//判断a[x]与a[y]是否交换,要求[x,y)是否有值与第y个数相等
bool ishow(int x,int y){
for(int i=x;i<y;i++){
if(a[i]==a[y]){
return false;
}
}
return true;
}
void prem(int k){ //交换的位置
if(k==n-1){ //最后一位后面没有数字了,输出并停止
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return;
}
for(int i=k;i<n;i++){
if(true){
swap(a[k],a[i]);
prem(k+1);
swap(a[k],a[i]);
}
}
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
prem(0); //交换的起点为0
return 0;
}
/*
输入
3
输出
123
132
213
231
312
321
*/
C++ 全排列去重
最新推荐文章于 2024-06-29 22:05:14 发布