问题链接:CCF NOI1153 素数环



时间限制: 1000 ms  空间限制: 262144 KB

题目描述

输入n(2<=n<=20),把1到n这n个数摆成一个环,要求相邻的两个数的和是一个素数。输出任意一个合法答案。

输入

输入一行一个数n。

输出

输出1到n的一个排列,表示一个环。如果无解,则输出-1。

样例输入

4
样例输出

1 2 3 4

数据范围限制

2<=n<=20

提示



问题分析

该问题与《UVA524 UVALive5270 HDU1016 ZOJ1457 Prime Ring Problem》几乎是同一问题,只是有解的话输出一个解,输出格式不同。

程序说明

参见参考链接。

要点详解

  • DFS是常用的解题方法。

参考链接:UVA524 UVALive5270 HDU1016 ZOJ1457 Prime Ring Problem。


100分通过的C语言程序:

#include <stdio.h>
#include <math.h>
#include <string.h>#define N 20int prime[N * 2];int ans[N];
int visited[N];
int n, flag;// Eratosthenes筛选法
void sieveofe(int p[], int n)
{int i, j;p[0] = 0;p[1] = 0;p[2] = 1;// 初始化for(i=3; i<n; i++) {p[i++] = 1;p[i] = 0;}int max = sqrt(n);for(i=3; i<=max; i++){if(p[i]) {for(j=i+i; j<=n; j+=i)    //进行筛选p[j]=0;}}
}void print_result()
{int i;for(i=1; i<=n; i++) {if(i != 1)printf(" ");printf("%d", ans[i]);}printf("\n");
}void dfs(int count)
{int i;if(count == n) {if(prime[ans[count] + ans[1]]) {print_result();     // 输出结果flag = 0;}} else {for(i=2; flag && i<=n; i++)if(!visited[i] && prime[i + ans[count]]) {ans[count + 1] = i;visited[i] = 1;dfs(count + 1);visited[i] = 0;}}
}int main(void)
{sieveofe(prime, N * 2 -1);// 初始化标志memset(visited, 0, sizeof(visited));scanf("%d", &n);if(n % 2 == 1)printf("-1\n");else {// 深度优先搜索并且输出结果ans[1] = 1;visited[1] = 1;flag = 1;dfs(1);if(flag)printf("-1\n");}return 0;
}

CCF NOI1153 素数环相关推荐

  1. HDOJ1016 素数环(DFS)

    题目: 1016 Prime Ring Problem 1 /* 2 素数环(顺时针逆时针)---dfs 3 使用栈 4 1-n(n最大是20,相邻最大和39,素数范围2-39之间) 5 2-39间的 ...

  2. 素数环-dfs回溯+二维数组记录(c++实现)

    问题描述: 给你n(2<=n<=16)个正整数1,2,3-n,你的任务是把这n个正整数组成一个环,使得任意相邻的两个整数之和为一个素数,输出有多少种合法方案. 输入 多组输入数据,每组数据 ...

  3. 素数环(nyoj488)

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

  4. UVA524 素数环 Prime Ring Problem

    UVA524 素数环 Prime Ring Problem - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/UVA52 ...

  5. 素数环java_素数环问题

    DFS,好像主要是对dfs的递归调用吧,自己也不太懂, 总之,它很神奇,多看看代码吧 #include #include #include #include int n; int isp[100]; ...

  6. rwkj 1422搜索(素数环)

      算法分析与设计:搜索(素数环) 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte 总提交:178            测试通过:35 ...

  7. 杭电ACM_1016_素数环

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1016 (经典的剪枝搜索) 题意: 就是求1~n的一个环(首尾衔接,顺序打乱),使得相邻的两个元素之和 ...

  8. UVA524 PrimeRingProblem素数环

    输入正整数n,把整数1,2,3,···n组成一个环,使得相邻两个整数之和均为素数.输出时从整数1开始逆时针排列.同一个环应恰好输出一次.n16. 回溯法 #include<iostream> ...

  9. ACM:回溯,八皇后问题,素数环

    (一)八皇后问题 (1)回溯 #include <iostream> #include <string>#define MAXN 100using namespace std; ...

最新文章

  1. SQL Server通过web方式进行远程维护,管理
  2. 2021年改造数据中心未来最需要的技能
  3. 汇编解析(2)-内存寻址之实模型平面模式(real mode flat mode)(2)
  4. word打开文档很久很慢_word文档打开特别慢怎么解决,word10打开文档很慢
  5. java的jstl的标签库_java_jstl 标签库
  6. 2017.3.27 生成魔咒 思考记录(有史以来最不容易)
  7. 让你提前认识软件开发(15):程序调试的利器—日志
  8. Redis 中的事件驱动模型
  9. 如何获得Android手机的软件安装列表
  10. html语言文档格式,HTML文档基本格式介绍,HTML基本标记介绍?
  11. 01-Java中的集合
  12. 聊聊我遇到的那些贵人
  13. 输出电阻与反馈网络的关系以及计算
  14. UBUNTU 22.04 使用 SUNSHINE 和 MOONLIGHT 进行串流
  15. python中文文本情感分析
  16. 容器集合——Collection(单列)、Map(双列)
  17. 阿里开源的10个神级项目
  18. 【IT实施培训那些事儿】
  19. 大数据环境-云平台(阿里云)
  20. 【GoogLeNet】海洋生物识别

热门文章

  1. JavaWeb——eclipse与tomcat环境配置
  2. 高级着色语言HLSL入门(7)
  3. MFC三大dll使用总结
  4. vue-transition过渡动画
  5. mysql begin rollback_事务控制语句,begin,rollback,savepoint,隐式提交的SQL语句
  6. 服务器需不需要虚拟内存,服务器要不要虚拟内存
  7. 一、RabbitMQ安装
  8. Idea部署web项目 与 eclipse 的不同之处
  9. html中可以编辑的文本,用BeautifulSoup编辑html中的文本
  10. 交换两个数不是三个数。