debug了好久。。各种犯错。。按照某个学长的思路,终于AC了。。

 #include <iostream>
#include <cstring>
using namespace std; int n,m,d;
bool isPrime[]; // 存储素数表
bool added[]; // 存储是否已添加到结果数组中
int re[]; // 结果存储数组
bool hasFoundResult = false; // 存储是否已找到答案 void buildPrimeDiagram() // 构建素数表
{
memset(isPrime,true,sizeof(isPrime));
for (int i = ; i <= ; i++)
{
if (isPrime[i])
for (int j = i; j*i <= ; j++)
{
isPrime[j*i] = false;
}
}
} bool passMuster(int numberOfTheNumbersAdded) // 判断到当前为止符合要求,是返回true,否返回false
{
int sum = re[numberOfTheNumbersAdded];
for (int i = , j = numberOfTheNumbersAdded-; i < d&&j>=; i++,j--)
{
sum+=re[j];
if (isPrime[sum]) return false;
}
return true;
} void dfs(int numberOfTheNumbersAdded) // 一个个的添加符合要求的数到结果数组中
{
if (numberOfTheNumbersAdded == m-n+) // 添加完全时
{
hasFoundResult = true;
return;
}
for (int i = n; i <= m; i++)
{
if (!added[i]) // i还未被添加时
{
re[numberOfTheNumbersAdded] = i; // 将i添加到结果数组
if (passMuster(numberOfTheNumbersAdded)) // 如果添加i后符合要求
{
added[i] = true;
dfs(numberOfTheNumbersAdded+); // 添加下一个
if (hasFoundResult) return; // 如果找到答案直接返回
added[i] = false; // 没有找到时, 把i的状态设为未添加
}
}
}
} int main()
{
buildPrimeDiagram();
while (cin>>n>>m>>d)
{
if (n==&&m==&&d==) break;
hasFoundResult = false; // 设为未找到答案
int numberOfTheNumbersAdded = ;
memset(added, false, sizeof(added));
dfs(numberOfTheNumbersAdded); // 寻找答案
if (hasFoundResult)
{
for (int i = ; i <= m-n; i++)
{
if (i!=) cout<<',';
cout<<re[i];
}
cout<<endl;
}
else cout<<"No anti-prime sequence exists."<<endl;
}
return ;
}

sicily 1002 Anti-prime Sequences的更多相关文章

  1. Who Gets the Most Candies?(线段树 + 反素数 )

    Who Gets the Most Candies? Time Limit:5000MS     Memory Limit:131072KB     64bit IO Format:%I64d &am ...

  2. 1002: Prime Path

    题目链接:http://172.16.200.33/JudgeOnline/problem.php?id=1002 题意:给你两个四位数的素数,求最少经过多少步的变化能够从一个素数变到另一个素数.在变 ...

  3. Sicily 1444: Prime Path(BFS)

    题意为给出两个四位素数A.B,每次只能对A的某一位数字进行修改,使它成为另一个四位的素数,问最少经过多少操作,能使A变到B.可以直接进行BFS搜索 #include<bits/stdc++.h& ...

  4. sicily 1500. Prime Gap

    Description The sequence of n ? 1 consecutive composite numbers (positive integers that are not prim ...

  5. <Sicily>Prime Palindromes

    一.题目描述 The number 151 is a prime palindrome because it is both a prime number and a palindrome (it i ...

  6. hdu 1002 prime 模板

    Constructing Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  7. [1002]prime

    输入一个数,判断其是否为素数: 本题有多组测试样例. 输入规则如下: 第一行为一个整数,样例组数T: 第二至第t+1行每行都有一个整数a(a >= 2),表示需要处理的数: 如果是素数则输出“y ...

  8. CSUFT 1002 Robot Navigation

    1002: Robot Navigation Time Limit: 1 Sec      Memory Limit: 128 MB Submit: 4      Solved: 2 Descript ...

  9. (Problem 49)Prime permutations

    The arithmetic sequence, 1487, 4817, 8147, in which each of the terms increases by 3330, is unusual ...

随机推荐

  1. 20个非常有用的Java程序片段--转

    原文地址:http://geek.csdn.net/news/detail/236591 下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = ...

  2. C#——单元测试

    测试搭建请看:http://www.cnblogs.com/Look_Sun/p/4514732.html 右键不出现Generate Unit Test选项请参考:http://www.jb51.n ...

  3. LVS(Linux Viretual Server) 负载均衡器 + 后端服务器

    ##定义: LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统. ##结构: 一般来说,LVS集群采用三层结构,其主要组成部分为: A.负载调 ...

  4. C++四舍五入问题

    C++四舍五入问题: c++默认的流输出数值有效位是6,包括整数和小数,若数值超出6位,则第七位四舍五入到6位数 #include <iomanip> 输入输出库的一部分,声明了一些与提取 ...

  5. Android 长按识别图中二维码 zxing

    #基于 Zxing, 初学Android 代码质量不高 //长按,通过zxing读取图片,判断是否有二维码 bigImage.setOnLongClickListener(new View.OnLon ...

  6. (转载)Android项目实战(二十八):Zxing二维码实现及优化

    Android项目实战(二十八):Zxing二维码实现及优化   前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中 ...

  7. 请问具体到PHP的代码层面,改善高并发的措施有哪些

    1.今天被问一个问题:请问具体到PHP的代码层面,改善高并发的措施有哪些? 面对高并发问题我首先想到的是集群.缓存(apt.redis.mem.内存...),但具体到PHP代码层面除了想到队列.减少网 ...

  8. 使用pgpool管理数据库集群故障的问题

    pgpool如何选举master角色 在pgpool启动的过程中通过对 pgpoo.conf配置文件中的数据库节点条目信息,对集群中的数据库节点从0开始一个个的遍历,并发送SQL语句“select p ...

  9. 【摘录】JAVA内存管理-有关垃圾收集的关键参数

    第八章 有关垃圾收集的关键参数 一些命令行参数可以用来选择垃圾收集器,指定堆或代的大小,修改垃圾收集行为,获取垃圾收集统计数据.本章给出一些最常用的参数.有关各种各样参数更多完整的列表和详细信息可以参 ...

  10. 大数据量.csv文件导入SQLServer数据库

    前几天拿到了一个400多M的.csv文件,在电脑上打开要好长时间,打开后里面的数据都是乱码.因此,做了一个先转码再导入数据库的程序.100多万条的数据转码+导入在本地电脑上花了4分钟,感觉效率还可以. ...