码迷,mamicode.com
首页 > 其他好文 > 详细

HUAS Summer Trainning #3 C

时间:2015-08-01 17:02:18      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:

Description

技术分享
 

A ring is composed of n (even number) circles as shown in diagram. Put natural numbers 技术分享 into each circle separately, and the sum of numbers in two adjacent circles should be a prime.

 

技术分享

 

Note: the number of first circle should always be 1.

 

Input 

n (0 < n <= 16)

 

Output 

The 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.

 

You are to write a program that completes above process.

Sample Input 

6
8

 

Sample Output 

Case 1:
1 4 3 2 5 6
1 6 5 2 3 4

Case 2:
1 2 3 8 5 6 7 4
1 2 5 8 3 4 7 6
1 4 7 6 5 8 3 2
1 6 7 4 3 8 5 2

题目大意:使1~n这些数组成环,并且两两相加要是素数,输出所有的解。

解题思路:第一个数总是1,直接用DFS从第二数开始遍历,遍历到底部不满足,回溯到上一个个节点,知道遍历完所有的可行解。

代码:

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

 

HUAS Summer Trainning #3 C

标签:

原文地址:http://www.cnblogs.com/huaxiangdehenji/p/4694190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!