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

Input:
n (0 < n < 20).
Output:
输出格式如下所示。 每行代表从1开始顺时针和逆时针旋转的一系列圆圈数字。 数字的顺序必须符合上述要求。 按照字典顺序打印解决方案。
你要编写一个完成上述过程的程序。
即使没有答案,也会在每个案例后打印一个空行。
Sample Input:
6
8
Sample Output:
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
解题思路:dfs。先打表记录40以内是素数的数组isp,因为相邻数之和有可能最大为39,所以只需枚举到39。关于字典序输出,这里每枚举到当前这个数,从2开始到n枚举哪些数是满足条件,有的话就将当前这个数记录在path数组中,并且标记这个数已经被访问,再递归下去寻找下一个数,如果递归不满足条件的话,将当前这个数置为0。每当cur==n时就输出当前素数环。其中有一个剪枝的操作,如果给定的整数n为奇数,那么肯定不存在素数环,(因为肯定存在两个奇数相邻,而奇数与奇数的和为偶数,所以一定不是素数环)这个节省了不少递归时间,不然老是TLE-_-||。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int n,isp[]={},vis[],path[];//vis数组是保存标记,path是记录
int is_prime(int t)//判断素数
{
for(int i=;i*i<=t;++i)
if(t%i==)return ;
return ;
}
void dfs(int cur)
{
if((cur==n) && isp[path[]+path[n]]){//递归边界 如果cur==n && isp(1+path[n])是素数,则终止条件
for(int i=;i<n;i++)
cout<<path[i]<<' ';
cout<<path[n]<<endl;
return ;
}
else{
for(int i=;i<=n;++i){//尝试放置每个数i
if(!vis[i] && isp[i+path[cur]]){ //如果i没用过
path[cur+]=i;//且i加上与之相邻的上一个数之和是素数,则把它赋给path[cur+1];
vis[i]=; //设置使用标志
dfs(cur+); //深搜
vis[i]=; //清除标志
}
}
}
}
int main()
{
for(int i=;i<;++i) //生成素数表,枚举到最大的2倍即可
isp[i]=is_prime(i);
int k=; //Case情况数
while(cin>>n){
cout<<"Case "<<k++<<':'<<endl;
memset(vis,,sizeof(vis));
vis[]=,path[]=;//将1作为path开头,且标记已访问
if(n> && (n%==))dfs();//剪枝,如果是偶数的话,必有素数环,从1开始深搜
cout<<endl;
}
return ;
}
ACM_素数环(dfs)的更多相关文章
- Hdu 1016 Prime Ring Problem (素数环经典dfs)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 【DFS】素数环问题
题目: 输入正整数n,对1-n进行排列,使得相邻两个数之和均为素数,输出时从整数1开始,逆时针排列.同一个环应恰好输出一次.n<=16 如输入: 6 输出: 1 4 3 2 5 6 1 6 5 ...
- UVA 524 素数环 【dfs/回溯法】
Description A ring is composed of n (even number) circles as shown in diagram. Put natural numbers ...
- nyist 488 素数环(搜索+回溯)
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 有一个整数n,把从1到n的数字无反复的排列成环,且使每相邻两个数(包含首尾)的和都为素数,称为素数环. ...
- 素数环问题[XDU1010]
Problem 1010 - 素数环问题 Time Limit: 1000MS Memory Limit: 65536KB Difficulty: Total Submit: 972 Acc ...
- Prime Ring Problem + nyoj 素数环 + Oil Deposits + Red and Black
Prime Ring Problem Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) ...
- HDU 1016 Prime Ring Problem(素数环问题)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1016 Prime Ring Problem Time Limit: 4000/2000 MS (Jav ...
- 素数环 南阳acm488(回溯法)
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简 ...
- HDU1016 素数环---(dfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1016 Sample Input 6 8 Sample Output Case 1: 1 4 3 2 5 6 ...
- hdu1016 Prime Ring Problem【素数环问题(经典dfs)】
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
随机推荐
- 《javascript设计模式》读书笔记二(封装和隐藏信息)
1.为什么要封装和信息隐藏 做过编程的朋友们知道"耦合"这个词.事实上封装的效果就是为了解耦,让类和类之间没有太多的联系,防止某一天改动某一类的时候,产生"多米骨诺牌效应 ...
- Hadoop在window上运行 user=Administrator, access=WRITE, inode="hadoop"
win7下eclipse中错误的详细描述如下: org.apache.hadoop.security.AccessControlException: org.apache.hadoop.securit ...
- 非计算机专业的伟伯是怎样拿到阿里Offer的。求职励志!!!
写在前面: 2015 年 7 月初.參加阿里巴巴校招内推, 8 月 15 日拿到研发project师 JAVA 的 offer .我的专业并不是计算机,也没有在互联网公司实习过,仅仅有一些学习和面试心 ...
- asp.net mvc 抓取京东商城分类
555 asp.net mvc 抓取京东商城分类 URL:http://www.jd.com/allSort.aspx 效果: //后台代码 public ActionResult Get ...
- java 配置时遇到的问题及解决办法
1. 最近JDK更新很频繁,以至于我安装时版本太多,选择也会出现问题 首先,确定你选择的是32位版本还是64位版本(貌似64位系统下也可以安装32位的JDK), 这个相当重要,因为这个会影响到ecli ...
- POJ 题目1204 Word Puzzles(AC自己主动机,多个方向查询)
Word Puzzles Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 10244 Accepted: 3864 S ...
- 本人会linux系统的各种版本的安装,近期发教程
小弟虽然刚刚踏入职场,可是咱大学也不是打酱油过的啊,研究过各种版本系统的安装,也都均已经实践,勿喷,有问题 咱们可以相互探讨!
- flex集成IFrame,IFrame集成UnityWebPlayer直接通讯调用解决方式
做Web开发一般是flex与JS交互,UnityWebPlayer与JS交互. 它们之间相互调用比較常见. /** * Flex调用Javascript函数 * @params functionNam ...
- Android大牛的博客
1 谦虚的天下:http://www.cnblogs.com/qianxudetianxia/ 2 csdn博文精选:http://www.csdn.net/article/2011-08-30/30 ...
- Javascript 解析字符串生成 XML DOM 对象。
Javascript 接收字符串生成 XML DOM 对象.实测对 Firefox .IE6 有效.可用于解析 ajax 的服务器响应结果,也可用于解析自定义字符串.1. [代码]函数 ppt模 ...