using namespace std;
const int maxsize=100;
int arr[maxsize];
int n;
int num=0;
bool repeat(int k,int l)
{
for(int i=k; i<l; i++)
{
if(arr[i]==arr[l])
return false;
}
return true;
}
void arranged_repeat(int a)
{
if(a==n)
{
for(int i=1; i<=n; i++)
{
// cout<<arr[i]<<" ";
}
num++;
// cout<<endl;
return;
}
for(int i=a; i<=n; i++)
{
if(repeat(a,i))
{
swap(arr[i],arr[a]);
arranged_repeat(a+1);
swap(arr[i],arr[a]);
}
}
}
int main()
{
cout<<"需要全排列的数字个数:"<<endl;
cin>>n;
for(int i=1; i<=n; i++)
{
cout<<"输入第"<<i<<"个数"<<endl;
cin>>arr[i];
}
cout<<endl;
cout<<"全排列为:"<<endl;
arranged_repeat(1);
cout<<"共有"<<num<<"种."<<endl;
}
/*需要全排列的数字个数
4
输入第1个数
1
输入第2个数
2
输入第3个数
3
输入第4个数
2
全排列为:
1 2 3 2
1 2 2 3
1 3 2 2
2 1 3 2
2 1 2 3
2 3 1 2
2 3 2 1
2 2 3 1
2 2 1 3
3 2 1 2
3 2 2 1
3 1 2 2
共有12种.
*/