| 比赛 | 
    板子大赛 | 
    评测结果 | 
    WWWWW | 
    | 题目名称 | 
    数列问题 | 
    最终得分 | 
    0 | 
    | 用户昵称 | 
    zqy | 
    运行时间 | 
    0.034 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    3.46 MiB  | 
    | 提交时间 | 
    2025-01-22 10:47:17 | 
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
int n,sum,mk[20],a[20],check[100];
bool pd(int x){
    for(int i=2;i*i<=x;i++)if(x%i==0)return 0;
    return 1;
}
void print(){
    sum++;
    for(int i=1;i<=n;i++)printf("%d ",a[i]);
    printf("\n"); 
}
void dfs(int x){
    if(x>n){
        print();
    }else{
        for(int i=1;i<=n;i++){
            if(!mk[i]){
                if(check[i+a[x-1]]){
                    mk[i]=1,a[x]=i;
                    dfs(x+1);
                    mk[i]=0,a[x]=0;
                }
            }
        }
    }
    return;
}
int main(){
    freopen("dfs3.in","r",stdin);
    freopen("dfs3.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n*2;i++)check[i]=pd(i); 
    dfs(1);
    cout<<sum<<endl;
    return 0;
}