洛谷UVA524 素数环 Prime Ring Problem
标签:搜索与回溯
题目:
从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。
算法分析:
非常明显,这是一道回溯的题目。从1开始,每个空位有20种可能,只要填进去的数合法:与前面的数不相同;与左边相邻的数的和是一个素数。第20个数还要判断和第1个数的和是否素数。
算法流程:
1、数据初始化;
2、递归填数:判断第i个数填入是否合法;
A、如果合法:填数;判断是否到达目标(20个已填完):是,打印结果;不是,递归填下一个;
B、如果不合法:选择下一种可能;
题解:
#include <iostream>
#include <cmath>
using namespace std; bool b[21]={0};
int a[21]={0};
int search(int);
int print();
bool pd(int,int);
int main()
{
search(1);
return 0;
}
int search(int t)
{
for (int i=1;i<=20;i++)
if(pd(a[t-1],i)&&(!b[i]))
{
a[t]=i;
b[i]=1;
if(t==20)
{
if(pd(a[20],a[1]))
print();
}
else search(t+1);
b[i]=0; }
}
int print()
{
for(int j=1;j<=20;j++)
cout<<a[j]<<' ';
cout<<endl;
}
bool pd(int x,int y)
{
int k=2;
while(k<=sqrt(x+y)&&(x+y)%k!=0)k++;
if(k>sqrt(x+y))return 1;
else return 0;
}
知识点:
- 素数筛法
void ifprime()
{ //打表法将1到40之间所有的素数用1标记放入数组中对应位置,其余数用0标记
for(int i=2;i<40;i++)
prime[i]=1;
prime[1]=0; for(int i=2;i<40;i++)
for(int j=2*i;j<=40;j+=i)
prime[j]=0;
}
- 素数定义法
bool pd(int x,int y)
{
int k=2;
while(k<=sqrt(x+y)&&(x+y)%k!=0)k++;
if(k>sqrt(x+y))return 1;
else return 0;
}
错解:
忘记了1到20不能重复,搜索写的也有问题
//1到20素数环
#include <iostream>
using namespace std;
int a[21];
int nas[40];
int check()
{ //素数筛
for(int i=2;i<=40;i++)nas[i]=1;
nas[1]=0;
for(int i=2;i<40;i++)
for(int j=2*i;j<40;j+=i)
{
nas[j]=0;
}
} int search(int k)
{ if(k==20)
{ for(int i=1;i<=20;i++)
if(nas[a[1]+a[20]])
for(int j=1;j<=20;j++)
cout<<a[j];
}
for(int i=1;i<=20;i++)
{
if(nas[a[k]+i])
{
a[k+1]=i;
search(k+1);
}
a[k+1]=0;
search(k);
}
}
int main()
{ check();
for(int i=1;i<=20;i++)
{
a[1]=i;
search(1);
for(int j=1;j<=20;j++)a[j]=0;
} return 0;
}
洛谷UVA524 素数环 Prime Ring Problem的更多相关文章
- UVA524 素数环 Prime Ring Problem
题目OJ地址: https://www.luogu.org/problemnew/show/UVA524 hdu oj 1016: https://vjudge.net/problem/HDU-10 ...
- 素数环 Primg Ring Problem
素数环 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/C 题意: 输入正整数n,把整数1~n组成一个 ...
- HDU - 1016 Prime Ring Problem 经典素数环
Prime Ring Problem A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., ...
- Prime Ring Problem素数环(HDU1016)
Prime Ring Problem 思路:先看成一条链,往里头填数,满足任意相邻两数和为质数(这可以打表预处理出40以内的所有质数,扩展的时候枚举),填完了后检查首尾是否满足条件.字典序可以采用扩展 ...
- uva 524 prime ring problem——yhx
Prime Ring Problem A ring is composed of n (even number) circles as shown in diagram. Put natural ...
- hdu 1016 Prime Ring Problem(DFS)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 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 ...
- Prime Ring Problem
Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ... ...
随机推荐
- DHCP和NAT
DHCP(dynamic host configuration protocol)用于内网动态分配IP,是一种基于UDP的应用层协议. NAT(net address translation)用于内网 ...
- 深入了解Kafka【三】数据可靠性分析
1.多副本数据同步策略 为了保障Prosucer发送的消息能可靠的发送到指定的Topic,Topic的每个Partition收到消息后,要向Producer发送ACK,如果Produser收到ACK, ...
- HashMap源码解析、jdk7和8之后的区别、相关问题分析(多线程扩容带来的死循环)
一.概览 HashMap<String, Integer> map = new HashMap<>(); 这个语句执行起来,在 jdk1.8 之前,会创建一个长度是 16 的 ...
- 转载:Window配置Redis环境和简单使用
原作:https://www.cnblogs.com/wxjnew/p/9160855.html 我自己的尝试:https://www.cnblogs.com/xiandedanteng/p/1214 ...
- Tomcat三实例cluster多播方案共享session再配置
昨天已经将两实例cluster多播方案共享Session配置成功,其中的关键就在于server.xml中,engine->channel->receiver节点中address得写成自己的 ...
- Count(*) 与 count(field) 一样吗?
有这么个表: 执行 select count(*) from hy_test select count(deptno) from hy_test 都得到 5 但执行 select count(name ...
- pytest测试框架 -- 简介
一.pytest测试框架简介: (1)pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效. (2)pytest框架可以兼容unittest用 ...
- linux下禁止root和匿名用户登录ftp
1.ftp通过root或其他用户进入可视化界面权限过大,容易导致系统文件误删 windows下输入ftp://IP去访问,不需要账号密码就可以访问到ftp文件夹 刚进去pub是空的,在linux上新增 ...
- GitHub常用上传文件的两种方法 附带常见的问题及Git安装教程
从早上下课到现在一直在琢磨如何给Github下载本地文件,中午饭都没吃.还好是解决了,感觉挺有成就感的.O(∩_∩)O哈哈~ 好哒 闲话不说,说重点. 一.git的安装 百度云:http://pan. ...
- nginx的安装和启动
https://www.cnblogs.com/wyd168/p/6636529.html nginx开机启动 https://www.cnblogs.com/gimin/p/8893559.html