HUAS Summer Trainning #3~C

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开始逆时针排列。同一个环应恰好输出一次。这个问题使用回溯法是很好的解题方法,还需注意的是最后一个数和第一个数之和也要为素数。并且这种没有限制条件停止的一般都要在输入数字时判断是否输入错误(!=EOF)

程序代码:

#include <cstdio> 
int n,A[18],vis[18],i;
int isp(int num)

 for(i=2;i*i<=num;i++) 
 {
  if(num%i==0)
   return 0;
 }
 return 1;
}

void dfs(int cur)
{
 if(n==cur&&isp(A[1]+A[n]))//递归边界,别忘了测试第一个数和最后一个数
 {
  for(i=1;i<n;i++)
   printf("%d ",A[i]);
  printf("%d\n",A[n]);//打印方案
 }
  for(int i=2;i<=n;i++)//尝试放置每个标志i
  {
  if(!vis[i]&&isp(i+A[cur]))//如果i没有用过,;并且与前一个数之和为素数
  {
   vis[i]=1;//设置使用标志
   A[cur+1]=i;
   dfs(cur+1);
   vis[i]=0;//清楚标志
  }
  }
}

int main()
{
 int t=0;
 while(scanf("%d",&n)!=EOF)
 {
  A[1]=1;
  if(t!=0)
   printf("\n");
  t++;
  printf("Case %d:\n",t);
  dfs(1);
 }
 return 0;

}

时间: 2024-11-07 12:25:57

HUAS Summer Trainning #3~C的相关文章

HUAS Summer Trainning #3~E

Description Today on a lecture about strings Gerald learned a new definition of string equivalency. Two strings a and b of equal length are calledequivalent in one of the two cases: They are equal. If we split string a into two halves of the same siz

2015 HUAS Summer Trainning #6~H

Description 小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识.  问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“美素数”,如29,本身是素数,而且2+9 = 11也是素数,所以它是美素数.  给定一个区间,你能计算出这个区间内有多少个美素数吗? Input 第一行输入一个正整数T,表示总共有T组数据(T <= 10000). 接下来共T行,每行输入两个整数L,R(1<= L <= R <= 10

2015 HUAS Summer Trainning #4 B

Description Before the invention of book-printing, it was very hard to make a copy of a book. All the contents had to be re-written by hand by so calledscribers. The scriber had been given a book and after several months he finished its copy. One of

2015 HUAS Summer Trainning #4 C

My birthday is coming up and traditionally I’mserving pie. Not just one pie, no, I have a numberN of them, of various tastes and of various sizes. Fof my friends are coming to my party and each ofthem gets a piece of pie. This should be one pieceof o

2015 HUAS Summer Trainning #4 D

Given several segments of line (int the X axis) with coordinates [Li, Ri]. You are to choose the minimalamount of them, such they would completely cover the segment [0, M]. InputThe first line is the number of test cases, followed by a blank line.Eac

2015 HUAS Summer Trainning #5~E

Description The world financial crisis is quite a subject. Some people are more relaxed while others are quite anxious. John is one of them. He is very concerned about the evolution of the stock exchange. He follows stock prices every day looking for

2015 HUAS Summer Trainning #4 A

Description In this problem, you have to analyze a particular sorting algorithm. The algorithm processes a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. For the input seque

HUAS Summer Trainning #3~L

Description The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It

HUAS Summer Trainning #3~M

Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次OP运算,如果代码中出现 fori=1;i<=n; i++)   for(j=i+1;j<=n; j++) OP; 那么做了n*(n-1)/2 次OP 操作. 现在给你已知有m层for循环操作,且每次for中变量的起始值是上一个变量的起始值+1(第一个变量的起始值是1),终止值都是一个输入的n,问最后OP有总共多

2015 HUAS Summer Trainning #5~N

Description Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave … The bone collector had a big bag with a volume of V ,and