Prime Ring problemTime
limit:4000/2000 MS (java/others) Memory limit:65536/32768 K (java/others)
Total submission (s): 28204 Accepted Submission (s): 12561
Problem Descriptiona Ring is compose of n circles as shown in diagram. Put Natural number 1, 2, ..., n into each circle separately, and the sum of numbers in the adjacent circles should is a PR Ime.
Note:the number of first circle should always be 1.
INPUTN (0 < n < 20).
Outputthe output format is shown as sample below. Each row represents a series of circle numbers in the ring beginning from 1 clockwisely and anticlockwisely. The order of numbers must satisfy the above requirements. Print Solutions in lexicographical order.
You is to write a program, that completes above process.
Print a blank line after each case.
Sample Input
68
Sample Output
Case 1:1 4 3 2 5 a 6 5 2 3 4Case 2:1 2 3 8 5 6 7 41 2 5 8 3 4 7 61 4 7 6 5 8 3 21 6 7 4 3 8 5 2
Sourceasia 1996, Shanghai (Mainland China)
#include <stdio.h> #include <string.h> #include <math.h>int visit[40],a[40],n;int Fun (int x) {for (int I=2;I<=SQRT (x); i++) if (x%i==0) return 0;return 1;} void Dfs (int k) {if (a[0]+a[n-1) &&k==n) {printf ("%d", a[0]), for (int i=1;i<n;i++) {printf ("%d", A[i]);} printf ("\ n"); return;} for (int i=2;i<=n;i++) {if ((!visit[i]) &&fun (I+a[k-1]) {Visit[i]=1;a[k]=i;dfs (k+1); visit[i]=0;}}} int main () {int kase=1;while (scanf ("%d", &n)!=eof) {printf ("Case%d:\n", kase++); memset (visit,0,sizeof (visit)); a[ 0]=1; DFS (1); printf ("\ n"); } return 0;}
Prime Ring problem (Hangzhou electric 1016) (DFS)