比赛 国庆欢乐赛2 评测结果 ATTTTTTTATTTTTTTTTTT
题目名称 排列 最终得分 10
用户昵称 KKZH 运行时间 35.974 s
代码语言 C++ 内存使用 3.83 MiB
提交时间 2025-10-04 11:53:27
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=30;
int n,a[N],ans;
map <int,int> mp;
void dfs(){
    int y=0;
    for(int i=1;i<=n;i++){
        y+=a[i]*pow(10,(n-i));
    }
    if(!mp.count(y)){
        mp[y]=1;
        ans++;
    }
    ans%=1000000007;
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            if(a[j]<a[i]) swap(a[j],a[i]),dfs(),swap(a[j],a[i]);
        }
    }
}
signed main(){
    freopen("changgao_perm.in","r",stdin);
    freopen("changgao_perm.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    dfs();
    cout<<ans;
}