标签:
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 5 int n,a[21],p[41]={0}; 6 bool used[21]; 7 bool flag,key; 8 9 void init() 10 { 11 for(int i=2;i*i<40;i++) 12 for(int j=i+i;j<40;j+=i) 13 p[j]=1; 14 } 15 16 bool check(void) 17 { 18 for(int i=0;i<n;i++) 19 if(p[a[i]+a[(i+1)%n]]) 20 return false; 21 return true; 22 } 23 24 void dfs(int cur) 25 { 26 int i; 27 if(cur==n) 28 { 29 if(check()) 30 { 31 flag=true; 32 for(i=0;i<n-1;i++) 33 printf("%d ",a[i]); 34 printf("%d\n",a[i]); 35 } 36 return; 37 } 38 for(i=2;i<=n;i++) 39 { 40 if(!used[i]&&!p[i+a[cur-1]]) 41 { 42 a[cur]=i; 43 used[i]=true; 44 dfs(cur+1); 45 used[i]=false; 46 } 47 } 48 } 49 50 int main() 51 { 52 int i,j; 53 init(); 54 int kase=0; 55 while(scanf("%d",&n)!=EOF) 56 { 57 a[0]=1,flag=false,used[1]=true; 58 memset(used,0,sizeof(used)); 59 if(n%2&&n!=1) 60 { 61 printf("No Answer\n\n"); 62 continue; 63 } 64 printf("Case %d:\n",++kase); 65 dfs(1); 66 if(!flag) 67 printf("No Answer\n"); 68 printf("\n"); 69 } 70 return 0; 71 }
标签:
原文地址:http://www.cnblogs.com/homura/p/4693018.html