素数环

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
 
描述

有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。

为了简便起见,我们规定每个素数环都从1开始。例如,下图就是6的一个素数环。

 
输入
有多组测试数据,每组输入一个n(0<n<20),n=0表示输入结束。
输出
每组第一行输出对应的Case序号,从1开始。 如果存在满足题意叙述的素数环,从小到大输出。 否则输出No Answer。
样例输入
6
8
3
0
样例输出
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
Case 3:
No Answer
#include<stdio.h>
#include<string.h>
#define MAX 22
int prime[110];//存放素数的数组
int visit[MAX];//用来记录第i个数是否已经放置好位置即是否用过
int a[MAX]; //储存并更新排序后的数的序列
int cur;//因为代表当前所判断的数是第几个数
int n;
void biao() //打表法将1到110之间所有素数用1标记放入数组中素数对应位置
{ //其余数用0标记
int i,j,s;
for(i=1;i<=110;i++)
prime[i]=1;
prime[1]=0;
for(i=2;i<=110;i++)
{
if(prime[i]==1)
{
for(j=i*2;j<=110;j+=i)
prime[j]=0;
}
}
}
void dfs(int cur,int n)
{
int i,j;
if(cur==n+1&&prime[1+a[n]]) //如果当前判断的数是第n+1个数则证明前边所有的排序
{ //均符合题意,因为是环所以要判断首尾相加是否为素数
for(i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n");
return ;
}
else
{
for(i=2;i<=n;i++) //因为题目要求从1开始输出所以判断时从2开始回朔判断
{
if(!visit[i]&&prime[i+a[cur-1]])//如果i没被用过并且i与他上一个的和为素数则往下执行
{
a[cur]=i; //将ichucun开始判断下一个数
visit[i]=1;//标记i已经用过
dfs(cur+1,n);//继续对下一个数进行判断
visit[i]=0;//清除标志
}
}
//return ;
}
}
int main()
{
int n,m,j,i,sum,k;
biao();
k=1;
while(scanf("%d",&n)&&n!=0)
{
memset(visit,0,sizeof(visit));
memset(a,0,sizeof(a));
a[1]=1;visit[1]=1;
printf("Case %d:\n",k++);
if(n&1) //因为偶数偶数相加奇数奇数相加均不是素数所以素数环应该是奇数偶数间隔
{ //当n为奇数时无法达到素数偶数间隔所以判断n是否为素数
if(n==1) //如果n是1则自己成环输出1
printf("1\n");
else //否则输出No Answer
printf("No Answer\n");
}
else
dfs(2,n);
}
return 0;
}

nyoj 488 素数环的更多相关文章

  1. nyoj 素数环

    算法:搜索 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简便起见,我们规定每个素数环都从1开始.例如,下图就是6的一个素数环. 输 ...

  2. nyoj素数环

    素数环 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简 ...

  3. ny488 素数环

    素数环 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简便起 ...

  4. DFS搜索题素数环

    素数环: 输入整数1,2,3,4,5,···,n组成一个环,使得相邻两个整数之和均为素数. 输出时从整数1开始逆时针排列.同一个环应恰好输出一次.n<=16. Sample: input: 6 ...

  5. HDU - 1016 Prime Ring Problem 经典素数环

    Prime Ring Problem A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., ...

  6. ACM_素数环(dfs)

    Problem Description: 如图所示,环由n个圆组成. 将自然数1,2,...,n分别放入每个圆中,并且两个相邻圆中的数字总和应为素数. 注意:第一个圆圈的数量应该始终为1. Input ...

  7. EOJ 1114 素数环

    题意 一个由自然数 1…n (n≤18) 素数环就是如下图所示,环上任意两个节点上数值之和为素数. 1 / \   4  2 \ /    3 Input 输入只有一个数 n,表示你需要建立一个 1… ...

  8. HDU 1016 素数环(dfs + 回溯)

    嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 一道很典型的dfs+回溯: 根据题意首先进行初始化,即第一个位置为1,然后进行dfs, ...

  9. 素数环:NYOJ--488--dfs||hdu-1016-Prime Ring Problem

    /* Name: NYOJ--488--素数环 Author: shen_渊 Date: 15/04/17 15:30 Description: DFS,素数打个表,37以内就够用了 */ #incl ...

随机推荐

  1. html代码究竟什么用途

    1.html代码,只能浏览器识别并读出.渲染出网页图形 2.html代码可以本地写,用浏览器渲染出.也可以服务器端通过http协议传送过来,在网页显示. 咱们上网看的网页都是服务器端通过http协议传 ...

  2. ArrayList源代码深入剖析

    第1部分 ArrayList介绍ArrayList底层采用数组实现,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAccess, Cloneable, java. ...

  3. Myeclipse 8.5 优化设置

    1.1 更改JavaScript文件默认编码 1.2 关闭Myeclipse不需要的启动项 1.3 取消Myeclipse自动更新 1.4 关闭Myeclipse自动验证 1.5 设置Myeclips ...

  4. [企业级linux安全管理]- 安全管理基础(1)

    1. 操作条件:  (1)装有 Cent OS Linux 操作系统的虚拟机一台 2. 背景: 某企业有一台服务器,其信息如下: (1)  该服务器上存在管理员 root,密码为 root,另存有一些 ...

  5. Armitage主屏幕说明与命令行启动

    (1)我们将Armitage主屏幕标注为A.B和C A:该区域显示预配置的模块.您可以在模块列表下面的文本框中输入要查找的模块进行查找. B:该区域显示我们可以进行漏洞测试的活跃主机. C:该区域显示 ...

  6. WinAPI——Windows 消息

    消息 值  注释  WM_NULL $0000   WM_CREATE $0001   WM_DESTROY $0002   WM_MOVE $0003   WM_SIZE $0005   WM_AC ...

  7. 【HDOJ】4355 Party All the Time

    好久没做过三分的题目了. /* 4355 */ #include <iostream> #include <sstream> #include <string> # ...

  8. 中国VR公司的详尽名单

    中国VR公司的详尽名单   <VR圈深度投资报告一:2014年以来所有VR/AR融资事件> 特征一.投资机构观望居多 尽管VR在媒体和二级市场炒得很热,但大多风险投资机构却慎于出手,以观望 ...

  9. Java [leetcode 35]Search Insert Position

    题目描述: Given a sorted array and a target value, return the index if the target is found. If not, retu ...

  10. Fine Uploader文件上传组件

    最近在处理后台数据时需要实现文件上传.考虑到对浏览器适配上采用Fine Uploader. Fine Uploader 采用ajax方式实现对文件上传.同时在浏览器中直接支持文件拖拽[对浏览器版本有要 ...