用set容器去重。
#include<iostream>
#include<algorithm>
#include<string>
#include<math.h>
#include<stdlib.h>
#include <iostream>
#include <vector>
#include <queue>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<stack>
#include<iostream>
#include<set>
#include<map>
using namespace std;
int b[100];
int total=0;
int n=10;
set<int> sss;
void dfs(int t)
{
int i,temp;
if(t==total-1)
{
int zzz=0;
for(i=0;i<total;i++)
zzz=b[i]+zzz*10;
sss.insert(zzz);
}else
{
for(i=t;i<total;i++)
{
temp=b[i],b[i]=b[t],b[t]=temp;
dfs(t+1);
temp=b[i],b[i]=b[t],b[t]=temp;//恢复原状
}
}
}
int main()
{
cin>>n;
total=n;
for(int i=0;i<n;i++) cin>>b[i];
dfs(0);
set<int>::iterator iter=sss.begin();
while(iter!=sss.end())
{
cout<<*iter<<endl;
++iter;
}
return 0;
}