1 条题解

  • 0
    @ 2025-10-8 16:48:21
    #include<bits/stdc++.h>
    using namespace std;
    int n,a[20],v[20];
    bool bk;
    bool pd(int x)
    {
        if(x<2) return 0;
        for(int i=2;i*i<=x;i++)if(x%i==0)return 0;
        return 1;
    }
    void dfs(int k)
    {
        if(k>n && pd(a[1]+a[n]))
        {
            for(int i=1;i<n;i++)printf("%d ",a[i]);
            printf("%d\n",a[n]);
        }
        else
        {
            for(int i=1;i<=n;i++)
                if(v[i]==0 && pd(a[k-1]+i)==1 )
                {
                    v[i]=1;
                    a[k]=i;
                    dfs(k+1);
                    v[i]=0;
                    a[k]=0;
                }   
        }
    }
    int main()
    {
        scanf("%d",&n);
        memset(v,0,sizeof(v));
        a[1]=1;v[1]=1;
        dfs(2);
        return 0;
    }
    
    • 1

    信息

    ID
    81
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    240
    已通过
    90
    上传者