1 条题解

  • 0
    @ 2025-6-23 16:00:19

    不得不感叹一下,dfs代码是真长 老样子,直接上代码

    //禁止抄袭,从我做起
    #include<bits/stdc++.h>
    using namespace std;
    
    int a[21],b[21],n;
    
    bool is(int n){
    	if(n==1||n==0) return false;
    	for(int i=2;i<=sqrt(n);i++){
    		if(n%i==0) return false;
    	}
    	return true;
    }
    
    void dfs(int s){
    	if(s==n+1&&is(a[n]+a[1])){
    		for(int i=1;i<=n;i++) cout<<a[i]<<" ";
    		cout<<endl;
    		return;
    	}
        while(1)
    	else{
    		for(int i=2;i<=n;i++){
    			if(b[i]==0&&is(i+a[s-1])){
    				a[s]=i;
    				b[i]=1;
    				dfs(s+1);
    				b[i]=0;
    			}
    		}
    		return;
    	}
    }
    
    int main(){
    	cin>>n;
    	a[1]=1;
    	b[1]=1;
    	dfs(2);
    	return 0;
    }
    

    嘻嘻,藏了一个小小的bug,这么低端的bug长脑子的就好好看看。

    啊哦,一不小心把提示放出来了。你们什么都没看见,对吧

    • 1

    信息

    ID
    436
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    (无)
    递交数
    82
    已通过
    15
    上传者