求助

目前我用的是排列组合的函数来枚举的
想问一下有什么问题

#include<iostream>
using namespace std;
int f(int x){
    int ans=0;
    for(int i=1;i<=x;i++)ans*=i;
    return ans;
}
int array_compare(int *a,int *b,int *c,int length){
    for(int i=0;i<length;i++){
        if(a[i]==c[i]||b[i]==c[i])return 0;
    }
    return 1;
}
int main(){
    int n,ans=0;
    cin>>n;
    int a[n],b[n],c[n];
    for(int i=0;i<n;i++)cin>>a[i];
    for(int i=0;i<n;i++)cin>>b[i];
    for(int i=1;i<=n;i++)c[i-1]=i;
    for(int i=0;i<f(n);i++){
        next_permutation(c,c+n);
        ans+=array_compare(a,b,c,n);
    }
    cout<<ans;
    return 0;
}

0 条评论

目前还没有评论...

信息

ID
1539
难度
9
分类
组合数学 点击显示
标签
递交数
189
已通过
11
通过率
6%
被复制
2
上传者