#include<iostream>
#include<cstdio>
void dfs(int p[10],int a[10],int n,int cur)
{
if(cur==n){
for(int i=0;i<n;i++) printf("%d ",a[i]);
printf("\n");
return ;
}
for(int i=0;i<n;i++)
{
if(!i||p[i]!=p[i-1])
{
int c1=0,c2=0;
for(int j=0;j<n;j++) if(p[j]==p[i]) c1++;
for(int j=0;j<cur;j++) if(p[i]==a[j]) c2++;
if(c2<c1){
a[cur]=p[i];
dfs(p,a,n,cur+1);
}
}
}
}
int main()
{
int p[10],a[10];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&p[i]);
dfs(p,a,n,0);
return 0;
}
枚举全排列
最新推荐文章于 2023-12-03 11:34:25 发布