Prime Ring Problem

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.

 

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 are to write a program that completes above process.

Print a blank line after each case. 
Sample Input

  1. 6
  2. 8

Sample Output

  1. Case 1:
  2. 1 4 3 2 5 6
  3. 1 6 5 2 3 4
  4.  
  5. Case 2:
  6. 1 2 3 8 5 6 7 4
  7. 1 2 5 8 3 4 7 6
  8. 1 4 7 6 5 8 3 2
  9. 1 6 7 4 3 8 5 2
  10.  
  11. 小范围数据,当然是递归+打表啦~这里掌握某种规律后也可以提高搜索效率,比如
  1. 素数环:给定n1~n组成一个素数环,相邻两个数的和为素数。
  2. 首先偶数(2例外,但是本题不会出现两个数的和为2)不是素数,
  3. 所以素数环里奇偶间隔。如果n是奇数,必定有两个奇数相邻的情况。
  4. 所以当n为奇数时,输出“No Answer”。
  5. n == 1时只1个数,算作自环,输出1
  6. 所有n为偶数的情况都能变成奇偶间隔的环-----所以都有结果。
  1.  
  1. #include<stdio.h>
  2. #include<string.h>
  3. int n,c=,i;
  4. int a[],b[];
  5. int jo(int a)
  6. {
  7. return a%==?:;
  8. }
  9. int prime[]={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,};
  10. void dfs(int step)
  11. {
  12. int i;
  13. if(step>n&&prime[a[]+a[n]]){
  14. for(i=;i<=n;++i){
  15. if(i==) printf("%d",a[i]);
  16. else printf(" %d",a[i]);
  17. }
  18. printf("\n");
  19. return;
  20. }
  21. if(jo(a[step-])){
  22. for(i=;i<=n;i+=){
  23. if(!b[i]&&prime[a[step-]+i]){
  24. b[i]=;
  25. a[step]=i;
  26. dfs(step+);
  27. b[i]=;
  28. }
  29. }
  30. }
  31. else{
  32. for(i=;i<=n;i+=){
  33. if(!b[i]&&prime[a[step-]+i]){
  34. b[i]=;
  35. a[step]=i;
  36. dfs(step+);
  37. b[i]=;
  38. }
  39. }
  40. }
  41. }
  42. int main()
  43. {
  44. while(~scanf("%d",&n)){
  45. memset(a,,sizeof(a));
  46. memset(b,,sizeof(b));
  47. a[]=;b[]=;
  48. if(n==) printf("Case %d:\n1\n\n",++c);
  49. else if(!jo(n)){
  50. printf("Case %d:\n",++c);
  51. dfs();
  52. printf("\n");
  53. }
  54. }
  55. return ;
  56. }

HDU - 1016 Prime Ring Problem 经典素数环的更多相关文章

  1. HDOJ(HDU).1016 Prime Ring Problem (DFS)

    HDOJ(HDU).1016 Prime Ring Problem (DFS) [从零开始DFS(3)] 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...

  2. [HDU 1016]--Prime Ring Problem(回溯)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 Prime Ring Problem Time Limit: 4000/2000 MS (Jav ...

  3. HDU 1016 Prime Ring Problem(素数环问题)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1016 Prime Ring Problem Time Limit: 4000/2000 MS (Jav ...

  4. HDU 1016 Prime Ring Problem(经典DFS+回溯)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  5. Hdu 1016 Prime Ring Problem (素数环经典dfs)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  6. hdu 1016 Prime Ring Problem(DFS)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  7. hdu 1016 Prime Ring Problem(深度优先搜索)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  8. HDU 1016 Prime Ring Problem (DFS)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  9. HDU 1016 Prime Ring Problem (回溯法)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

随机推荐

  1. 基于OpenCL的深度学习工具:AMD MLP及其使用详解

    基于OpenCL的深度学习工具:AMD MLP及其使用详解 http://www.csdn.net/article/2015-08-05/2825390 发表于2015-08-05 16:33| 59 ...

  2. Extjs-树 Ext.tree.TreePanel 动态加载数据

    先上效果图 1.说明Ext.tree.Panel 控件是树形控件,大家知道树形结构在软件开发过程中的应用是很广泛的,树形控件的数据有本地数据.服务器端返回的数据两种.对于本地数据的加载,在extjs的 ...

  3. Package md5 implements the MD5 hash algorithm as defined in RFC 1321 base64

    https://golang.google.cn/pkg/crypto/md5/ Go by Example 中文:Base64编码 https://books.studygolang.com/gob ...

  4. [洛谷P3941] 入阵曲

    题目背景 丹青千秋酿,一醉解愁肠. 无悔少年枉,只愿壮志狂. 入阵曲 题解在代码里. #include<iostream> #include<cstdio> #include& ...

  5. Hibernate主要查询方式

    1.hql查询 1.1 无参数的hql查询 1.2 带参的hql查询(分为问号占位和字符占位两种) Ps: 绑定各种类型的参数时用setParameter()绑定参数,如封装方法后用不定参数时循环绑定 ...

  6. signal函数理解或者void (*signal(int signum,void(*handler)(int)))(int)理解

    把void (*signal(int signum,void(*handler)(int)))(int)分成两部分: typedef void (*sighandler_t)(int); sighan ...

  7. 升级python到最新2.7.13

    python2.7是2.X的最后一个版本,同时也加入了一部分3.X的新特性.并且具有更好的性能,修改多个bug.所以决定升级到最新的2.7版,我的目前的版本是2.6.6 查看当前python版本 # ...

  8. SAM初步

    SAM(Suffix Automaton),后缀自动机. SAM是种十分神奇的数据结构,我认为他的主要神奇之处,在于最大限度的利用了分类思想. SAM上有两种边,代表两种转移方式. 一种是树边,一种是 ...

  9. #pragma once与#ifndef

    都是为了避免同一个头文件被包含多次.在编译器对这两种方式都支持的情况下,区别很小. 方式一: #pragma once ...//这里放声明语句 方式二: #ifndef 宏名 #def 宏名 ... ...

  10. MySQL丨5.6版本插入中文显示问号解决方法

    解决办法: 1.找到安装目录下的my-default.ini 这个配置文件 2.copy一份粘贴到同目录下 另命名为my.ini 3.在my.ini 配置下加上下面几句代码 并保存 [mysql]de ...