博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codevs——1031 质数环
阅读量:6622 次
发布时间:2019-06-25

本文共 1272 字,大约阅读时间需要 4 分钟。

1031 质数环

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 查看运行结果
 
 
题目描述 
Description

一个大小为N(N<=17)的质数环是由1到N共N个自然数组成的一个数环,数环上每两个相邻的数字之和为质数。如下图是一个大小为6的质数环。为了方便描述,规定数环上的第一个数字总是1。如下图可用1 4 3 2 5 6来描述。若两个质数环,数字排列顺序相同则视为本质相同。现在要求你求出所有本质不同的数环。

输入描述 
Input Description

只有一个数N,表示需求的质数环的大小。如:

输出描述 
Output Description

每一行描述一个数环,如果有多组解,按照字典序从小到大输出。如:

样例输入 
Sample Input

6

样例输出 
Sample Output

1 4 3 2 5 6

1 6 5 2 3 4

数据范围及提示 
Data Size & Hint
n<=17
 

搜索!

代码:

#include
#include
#include
#include
#include
#include
#define N 20using namespace std;int n,a[N];bool vis[N];int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') f=-1; ch=getchar();} while(ch>='0'&&ch<='9') {x=x*10+ch-'0'; ch=getchar();} return x*f;}int pd(int x){ for(int i=2;i<=sqrt(x);i++) if(!(x%i)) return 0; return 1; }int print(){ for(int i=1;i<=n;i++) printf("%d ",a[i]); printf("\n");}int dfs(int x){ for(int i=2;i<=n;i++) if(!vis[i]&&pd(a[x-1]+i)) { vis[i]=1; a[x]=i; if(x==n&&pd(a[1]+a[n])) print(); else dfs(x+1); vis[i]=0; }}int main(){ n=read(); a[1]=1; dfs(2); return 0;}

 

转载于:https://www.cnblogs.com/z360/p/7215995.html

你可能感兴趣的文章
CVE-2017-8464远程命令执行漏洞(震网漏洞)复现
查看>>
Java 12 将于3月19日发布,8 个最终 JEP 一览
查看>>
基础为重,Python的基础,成就月薪过万
查看>>
索罗斯的反身理论和汇率分析
查看>>
Linux登录那点事
查看>>
angular项目中bootstrap-datetimepicker时间插件的使用
查看>>
通过网络仓库建立本地的yum仓库
查看>>
【web端权限维持】利用ADS隐藏webshell
查看>>
Linux下gdb的安装及使用入门
查看>>
Java 程序执行过程的内存分析
查看>>
灾难恢复-boot分区的恢复方法
查看>>
小游戏-猜数字
查看>>
深度学习到顶,AI寒冬将至!
查看>>
【投资】欧盟区块链创业公司投资超500万欧元
查看>>
优傲机器人:人机协作机器人助推电子制造业智慧升级
查看>>
IBM利用“沃森”超级电脑帮助员工对抗癌症
查看>>
「镁客·请讲」珍为科技周朔鹏:打造科技产品传播平台,对接智能制造产业上下游...
查看>>
使用NHibernate作为ORM容易碰到的问题
查看>>
服务器集中检测Cacti
查看>>
快速构建Windows 8风格应用34-构建Toast通知
查看>>