本文共 1226 字,大约阅读时间需要 4 分钟。
A 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 two adjacent circles should be a prime.
Note: the number of first circle should always be 1.
n (0 < n < 20).
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. Print solutions in lexicographical order.
You are to write a program that completes above process. Print a blank line after each case.
6 8
Case 1:
1 4 3 2 5 6 1 6 5 2 3 4Case 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
将n个数来放到n个位置上,相邻的两个数和一定要是素数,输出符合的序列,序列一定要是从1为开头。
放第n个数时,要记得和第一个数进行判断和是否为素数
#include#include #include #include using namespace std;int n;int vis[27]; //vis数组用来标记数是否用了int num[27]; //num来存放序列int cnt=0;int isp(int x) //判断素数{ for(int i=2;i*i<=x;i++) { if(x%i==0) return 0; } return 1;}void dfs(int step){ //如果step=n说明n个数都找到,然后要判断最后一个数和第一个数的和是否符合素数 if(step==n&&isp(num[0]+num[step-1])==1) { printf("%d",num[0]); for(int i=1;i
转载地址:http://epzci.baihongyu.com/