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

思路:

1、首先素数环,就一定要进行素数判定,考虑n<=17,可以直接暴力求出来,或者说直接可以开一个数组,把与i的和为素数的j从小到大记录下来

2、由于要输出字典序最小的方案,所以第一个一定是一,把一作为第一个数,进行深搜,用刚才预处理好的j从小到大都试一边,然后往下递归,知道找到解位置,找不到解就输出-1

代码:

#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
int isprime[],j[],ans[],vis = ,n;
vector<int> a[];
void judge_prime(){
bool judge;
for(int i = ;i <= ;i++){
isprime[i] = ;
for(int j = ;j <= i / ;j++){
if(i % j == ){
isprime[i] = ;
break;
}
}
}
}
void judge_add(){
for(int i = ;i <= n;i++){
for(int j = i+;j <= n;j++){
if(isprime[i+j]){
a[i].push_back(j);
a[j].push_back(i);
}
}
}
}
void dfs(int deep,int last){
int k;
if(deep == n){
if(!isprime[last+]) return;
for(int i = ;i <= n;i++) cout<<ans[i]<<" ";
cout<<endl;
return; }
for(int i = ;i < a[last].size();i++){
if(i >= a[last].size()) break;
k = a[last][i];
if(!j[k]){
ans[deep+] = k;
j[k] = ;
dfs(deep+,k);
j[k] = ;
}
}
}
int main(){
judge_prime();
cin>>n;
judge_add();
ans[] = ;
j[] = ;
dfs(,);
return ;
}

codevs1031 质数环的更多相关文章

  1. 深度优先搜索 codevs 1031 质数环

    codevs 1031 质数环  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold   题目描述 Description 一个大小为N(N<=17)的质数环是 ...

  2. AC日记—— codevs 1031 质数环(搜索)

    题目描述 Description 一个大小为N(N<=17)的质数环是由1到N共N个自然数组成的一个数环,数环上每两个相邻的数字之和为质数.如下图是一个大小为6的质数环.为了方便描述,规定数环上 ...

  3. codevs 1031 质数环

    题目描述 Description 一个大小为N(N<=17)的质数环是由1到N共N个自然数组成的一个数环,数环上每两个相邻的数字之和为质数.如下图是一个大小为6的质数环.为了方便描述,规定数环上 ...

  4. codevs——1031 质数环

    1031 质数环  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 一个大小为N(N<=17 ...

  5. 「UVA524」 Prime Ring Problem 质数环

    Description 输入正整数n,把整数1,2,-,n组成一个环,使得相邻两个整数之和均为素数.输出时,从整数1开始逆时针排列.同一个环恰好输出一次.n<=16. A ring is com ...

  6. 【Codevs1080】质数环

    http://codevs.cn/problem/1031/ 不讲什么,预处理素数+搜索 // <C.cpp> - Sun Oct 9 12:58:23 2016 // This file ...

  7. Openjudge 1.13-21:最大质因子序列(每日两水)

    总时间限制:  1000ms 内存限制:  65536kB 描述 任意输入两个正整数m, n (1 < m < n <= 5000),依次输出m到n之间每个数的最大质因子(包括m和n ...

  8. hdu5317 RGCDQ (质因子种数+预处理)

    RGCDQ 题意:F(x)表示x的质因子的种数.给区间[L,R],求max(GCD(F(i),F(j)) (L≤i<j≤R).(2<=L < R<=1000000) 题解:可以 ...

  9. openjudge7834:分成互质组 解析报告

    7834:分成互质组 总时间限制:  1000ms 内存限制:  65536kB 描述 给定n个正整数,将它们分组,使得每组中任意两个数互质.至少要分成多少个组? 输入 第一行是一个正整数n.1 &l ...

随机推荐

  1. EntityFramework:An error occurred while executing the command definition. See the inner exception for details.

    错误描述: 调用EF中的FirstOrDefault()时,报错误:An error occurred while executing the command definition. See the ...

  2. TensorFlow---image recognition--classify_image运行、文件说明与错误(路径)解决

    tutorial系列mnist已经玩过了,这篇玩一下 classify_image,其实就是image label.模型已经训练好的了,直接下载下来在.pb文件中. 本机环境: Win10 + Pyt ...

  3. Linux 介绍快速浏览

    Linux 介绍 内核 库: .so 共享对象,windows:dll 动态链接库 应用程序 Linux的基本原则:1.由目的单一的小程序组成:组合小程序完成复杂任务:2.一切皆文件:3.尽量避免捕获 ...

  4. css样式获取及兼容性(原生js)

    类选择器兼容性 getbyclass()类选择器,在IE8及以下均不可用. // 类选择器的兼容性 function getbyclass(parentName,Name){ var parentNa ...

  5. Android Studio3.0打包APK的时候 报错:

    Error:Execution failed for task ':app:transformDexWithDexForRelease'.> com.android.build.api.tran ...

  6. 最容易理解的HMM文章

    wiki上一个比较好的HMM例子 分类 隐马尔科夫模型 HMM(隐马尔科夫模型)是自然语言处理中的一个基本模型,用途比较广泛,如汉语分词.词性标注及语音识别等,在NLP中占有很重要的地位.网上关于HM ...

  7. RocketMQ学习笔记(15)----RocketMQ的消息模式

    在前面学习ActiveMQ时,看到ActiveMQ可以是队列消息模式,也可以是订阅发布模式. 同样,在RocketMQ中,也存在两种消息模式,即是集群消费模式和广播消费模式. 1. 集群消费模式 跟A ...

  8. 01Hypertext Preprocessor

    Hypertext Preprocessor PHP即Hypertext Preprocessor是一种被广泛使用的开放源代码多用途动态交互性站点的强有力的服务器端脚本语言尤其适用于 Web开发人员可 ...

  9. 【转载】Appium环境搭建(Windows版)

    注:appium安装到C盘,node.js安装到C盘 一.安装node.js 1.到官网下载node.js:https://nodejs.org/en/download/ 2.获取到安装文件后,直接双 ...

  10. 动态生成java、动态编译、动态加载

    我曾经见过一个“规则引擎”,是在应用系统web界面直接编写java代码,然后保存后,规则即生效,我一直很是奇怪,这是如何实现的呢?实际这就好像jsp,被中间件动态的编译成java文件,有被动态的编译成 ...