编辑代码

#include<bits/stdc++.h>
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种.
*/