K - Prime Ring Problem

=================================================================================================================================
题目大意是给出 1~n 个数 第一个数必定是 1 ,使得无论那两个相邻的数相加,都是质数(即大于1的自然数中,除了1和它本身以外不再有其他因数);
打印出所有可能,即直接用dfs 遍历所有可能性;
我的代码思路:
1. 数组范围很小 最大的和不超过40  则可以直接预处理这个范围内的数是否为质数。
2.如何快速判断是否为质数 ,快速的方法 :先判断2之后  3~sqrt(n) 之间所有的奇数 是否存在其约数。
3.用tail数组储存列表。
4.一般dfs的套路 使用book 标记是否使用过,开始遍历。
=================================================================================================================================
代码:
 #include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int n;
bool prime[];
void Prime() //预处理1~40之间的数是否为质数
{
for(int i = ;i <= ;++i)
{
bool flag = ;
for(int j = ;j<=sqrt(i);j==?++j:j+=)
if(i%j==) {flag = ;break;}
flag==?prime[i]=:prime[i]=; //1即为质数0则否
}
}
int tail[]; //列表
void print() //打印列表
{
for(int i =;i<=n;++i)
printf(i==n?"%d\n":"%d ",tail[i]);
}
bool book[]; //标记
void dfs(int x)
{
if(x==n)
{ //最后再判断最后一个数与第一个数相加是否为质数
if(prime[tail[n]+tail[]]) print();
return;
}
for(int i = ;i<=n;++i)
{
if(prime[i+tail[x]]&&book[i]==)//标准dfs套路↓
{
tail[x+] = i;
book[i] = ;
dfs(x+);
book[i] = ;
}
}
}
int main()
{
int cas = ;
Prime();
tail[] = ; book[] = ;
while(~scanf("%d",&n))
{
memset(book,,sizeof(book));
printf("Case %d:\n",++cas);
if(n==) printf("1\n");
else if(n%==) ; //如果是奇数,铁定实现不了
else dfs();
putchar('\n');
}
}

Prime Ring Problem (DFS练习题)的更多相关文章

  1. HDOJ(HDU).1016 Prime Ring Problem (DFS)

    HDOJ(HDU).1016 Prime Ring Problem (DFS) [从零开始DFS(3)] 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...

  2. HDU 1016 Prime Ring Problem (DFS)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  3. Prime Ring Problem(dfs水)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 Prime Ring Problem Time Limit: 4000/2000 MS (Jav ...

  4. Hdu1016 Prime Ring Problem(DFS) 2016-05-06 14:27 329人阅读 评论(0) 收藏

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  5. hdu1016 Prime Ring Problem(DFS)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  6. Prime Ring Problem dfs

    A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle ...

  7. Uva 552 Prime Ring Problem(dfs)

    题目链接:Uva 552 思路分析:时间限制为3s,数据较小,使用深度搜索查找所有的解. 代码如下: #include <iostream> #include <string.h&g ...

  8. HDU 1016 Prime Ring Problem(经典DFS+回溯)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  9. HDU1016 Prime Ring Problem(DFS回溯)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

随机推荐

  1. I want to be a Great Web Front-end Developer

    有时觉得特别的浮躁,可能是每天春运般的挤地铁,随处可见因为一点小磕小蹭吹胡子瞪眼睛的人,可能是身边的人貌似一下子都好有钱,买房买车或者买第N套房. 很想静下来心寻找到自己inner pace,但是忽然 ...

  2. June 15th 2017 Week 24th Thursday

    Whatever is worth doing is worth doing well. 任何值得做的,就把它做好. Whatever is worth doing is worth doing we ...

  3. Markdown 学习

    一级标题 一级标题 === 或 # 一级标题 二级标题 二级标题 --- 或 ## 二级标题 三级标题 ### 三级标题 链接Gayhub [Gayhub](https://www.github.co ...

  4. Hybris ECP(Enterprise Commerce Platform)的调试

    This blog is written to demonstrate how to setup debug environment for Hybris ECP(Enterprise Commerc ...

  5. 牛客练习赛20(ABC)

    A. 礼物 题意: 我从买奥利奥的事情中想出了一个算法题:假设某个店铺有N种不同类型的1元奥利奥和M种不同类型的2元奥利奥,而且余量无限,我的钱有k元,我想把k元都用来买奥利奥,且可以买同类型的奥利奥 ...

  6. 安装配置MySQL

    安装yum install mysql-server设置开机启动chkconfig mysqld on启动mysql服务器service mysqld start 设置root的初试密码mysqlad ...

  7. Angular 引用库

    <!doctype html> <html ng-app> <head> <script src="http://code.angularjs.or ...

  8. jstl有什么优势(简单介绍)

    简单介绍 JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的.JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x. ...

  9. Windows下同时安装Anaconda2与Anaconda3

    1. 安装一个作为主版本,比如先安装Anaconda2,安装时选择[添加path环境变量].我的安装地址为:E:\ProgramData\Anaconda3 2. 安装另一个版本python,安装时注 ...

  10. 【洛谷P1169】[ZJOI2007]棋盘制作

    棋盘制作 题目链接 这个题是[USACO5.3]巨大的牛棚Big Barn和玉蟾宫的结合 一道顶两道毒瘤! 题解: 首先,棋盘有两种选法: 1.任意白格(x,y) (x+y)%2=0 ,任意黑格(x, ...