UVA - 524

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 
 5 using namespace std;
 6 
 7 int visit[20];
 8 
 9 int isPrime(int n) {
10     for (int i = 2;i * i <= n;i++) {
11         if (n % i == 0) return 0;
12     }
13     return 1;
14 }
15 
16 int dfs(int* A,int n,int cur) {
17     if (cur == n && isPrime(A[0] + A[cur - 1])) {
18         for (int i = 0;i < n - 1;i++) {
19             cout << A[i] << " ";
20         } 
21         cout << A[n - 1] << endl;
22     }
23     else {
24         for (int i = 2;i <= n;i++) {
25             if (!visit[i] && isPrime(i + A[cur - 1])) {
26                 visit[i] = 1;
27                 A[cur] = i;
28                 dfs(A,n,cur + 1);
29                 visit[i] = 0;
30             }
31         }
32     }
33 }
34 
35 int main () {
36     int n;
37     int pos = 0;
38     while (cin >> n) {
39         if (pos) cout << endl;
40         printf("Case %d:\n",++pos);
41         int a[20];
42         memset(visit,0,sizeof(visit));
43         visit[1] = 1;
44         a[0] = 1; 
45         dfs(a,n,1);
46     }
47 }

 

posted @ 2014-11-26 13:59  闪光阳  阅读(111)  评论(0编辑  收藏  举报