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. 简单记录一下http请求的7个步骤

    1.建立TCP连接 2.客户端发送请求命令 3.客户端发送请求头信息 4.服务端应答请求,返回版本号和状态码 5.服务端应答头信息 6.服务端向客户端发送数据 7.服务器关闭TCP连接(Connect ...

  2. Do the Untwist

      Do the Untwist Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  3. GridView中的更新按钮不能触发RowUpdating事件

    当点击“编辑”按钮以后,可以看到“更新”和“取消”按钮,“取消”按钮可以正常触发RowCancelingEdit事件,但是“更新”按钮不能触发RowUpdating事件. 解决方案: 在<asp ...

  4. 时间序列算法理论及python实现(2-python实现)

    如果你在寻找时间序列是什么?如何实现时间序列?那么请看这篇博客,将以通俗易懂的语言,全面的阐述时间序列及其python实现. 时间序列算法理论详见我的另一篇博客:时间序列算法理论及python实现 - ...

  5. 失去光标display=none事件的坑

    1.实现效果: 失去光标进行判断,如果内容为空出现提示. 2.页面代码: <tr class="tableform_tr"> <td width="15 ...

  6. NO.008-2018.02.13《折桂令·春情》元代:徐再思

    折桂令·春情_古诗文网   折桂令·春情 元代:徐再思 平生不会相思,才会相思,便害相思.生下来以后还不会相思,才刚刚懂了什么是相思,却深受着相思之苦. 身似浮云,心如飞絮,气若游丝.身像飘浮的云,心 ...

  7. 解决Sublime Text乱码问题

    第一步:安装Package Control 大家如果是在官网下载的Sublime Text 3,那么首先需要安装一个 Package Control包,这是一个用来安装其他插件的包,不管装什么插件,首 ...

  8. iOS 清除xcode缓存和生成文件

    方法1 按快捷键 shift+command+G 或者 Finder图标点击右键选 前往文件夹... 调出前往文件夹框 在里面输入如下 /Users/(自己电脑名字)/Library/Develope ...

  9. C++/C 内存大小

    #include <stdio.h> struct test1{    char a1;    int a2;    double a3;}; struct test2{    char ...

  10. vuex+vue-router拦截

    干就完了 项目中经常遇到这样一个场景,用户信息或者进行增删改的一些模块,需要根据用户是否登录,进行路由拦截,直接上代码 在store文件夹下的store.js中存放一个默认登录状态 /* * stor ...