WA求助
查看原帖
WA求助
1245384
Mzh2012楼主2024/7/17 19:43
#include<bits/stdc++.h>

using namespace std;

int n,path[20],cnt=1;
int vis[20];
bool isprime(int x){
    for(int i = 2;i<=sqrt(x);i++){
		if(x%i==0)  return 0;
    }
    return 1;
}
void dfs(int x){
    if(x==n && isprime(path[n-1]+path[0])){ 
		for(int i = 0;i<n-1;i++){
	    	cout<<path[i]<<" ";
	    }
	    cout<<path[n-1]<<endl;
		return;
    }
    for(int i = 2;i<=n;i++){
        if(!vis[i] && isprime(i+path[x-1])){
            path[x]=i;
            vis[i]=1;
            dfs(x+1);
            vis[i]=0;
        }
    }
}
int main(){
    while(cin>>n){
		memset(vis,false,sizeof(vis));
		cout<<"Case "<<cnt++<<":"<<endl;
		path[0] = 1;
		vis[1] = 1;
		dfs(1);
		cout<<endl;
    }
    return 0;
}

样例过了

2024/7/17 19:43
加载中...