#include<iostream>
using namespace std;
int ans; //计数器
//自定义内联函数Swap
template <class Type>
inline void Swap(Type &a,Type &b)
{
Type temp=a;
a=b;
b=temp;
}
//判断是否有重复元素
template <class Type>
int ok(Type list[],int k,int i)
{
if(i>k)
for(int t=k;t<i;t++)
if(list[t]==list[i]) return 0;
return 1;
}
template <class Type>
void Perm(Type list[],int k,int m){
if(k==m)
{
ans++;
for(int i=0;i<=m;i++)
cout<<list[i];
cout<<endl;
}
else
for(int i=k;i<=m;i++){
if(ok(list,k,i))
{
Swap(list[k],list[i]);
Perm(list,k+1,m);
Swap(list[k],list[i]);
}
}
}
int main()
{
ans=0;
int n;
char sample[999];
cin>>n;
for(int i=0;i<n;i++)
cin>>sample[i];
Perm(sample,0,n-1);
cout<<ans<<endl;
return 0;
}
运行截图: