#include<cstdio>
int n=0;
void swap(int *a,int *b)
{
int m;
m=*a;
*a=*b;
*b=m;
}
bool isswap(int list[],int a,int b)//判断中间是否含有重复的全排列。
{
for(int i=a;i<b;i++)
if(list[i]==list[b])
return false;
return true;
}
void perm(int list[],int k,int m)
{
int i;
if(k>m)
{
for(i=0;i<=m;i++)
printf("%d ",list[i]);
printf("\n");
}
else
{
for(i=k;i<=m;i++)
{
if(isswap(list,k,i))
{
swap(&list[i],&list[k]);
perm(list,k+1,m);
swap(&list[i],&list[k]);
}
}
}
}
int main()
{
int list[]={1,2,2};
perm(list,0,2);
printf("total:%d\n",n);
return 0;
}