洛谷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, ... ...
随机推荐
- 下拉列表被flash覆盖的解决方法
做鼎闻有一段时间了,有的banner轮播图的地方用flash替换的时候,就会导致上面的导航条下拉列表被flash覆盖,找了一段时间没有得到有效的解决方法,后来知道关键是flash的这一属性{ &quo ...
- VMware Workstation Pro15安装路径、修复等问题
我的VMware Worstation 昨晚报错,无法打开虚拟机,VMware Authorization Services 也无法启动,于是卸载重装,结果仍然无法启动VMware Authoriza ...
- 05_进程间通信 IPC
1.进程间的通信方式 1.磁盘交互: 速度慢,不安全 2.socket套接字 3.管道通信(Pipe) 4.消息队列(Queue, Manager().Queue, JoinableQueue) 5. ...
- Kubernetes v1.12/v1.13 二进制部署集群(HTTPS+RBAC)
官方提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环 ...
- 2020BJDCTF
diff: 不得不说这种题目挺有意思的,现在记录一下阶梯过程: 先登录远程,发现有两个文件: 虽然直接能卡到flag文件,但是我们是以ctf用户登录的,并不能直接打开flag文件.仔细观察diff文件 ...
- Repeater每行绑定事件代码
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repea ...
- postman测试接口
一.postman安装 不介绍.可百度搜索.安装完成后如下: 二.postman测试接口 get请求: post请求:请求参数如果是json格式,则如下 上传文件:如果接口中要求上传文件,可如下操作 ...
- UI自动化时,解决selenium中无法点击Element:ElementClickInterceptedException
在跑自动化时,页面上有2个下拉框,两个下拉框无论屏蔽哪一段都会成功,但是同时放开跑时会报错,百度给的解释是上面的下拉框元素覆盖了下面下拉框的元素定位,才会导致报错 百度的解决办法有2种: elemen ...
- [POJ3253]Fence Repair(单调队列)
题目链接 http://poj.org/problem?id=3253 题目描述 大意:切长度为a的木条的花费是a,给定最终切好的n段各自的长度,问由原来的一根木条(长度为n段长度和)以最终总花费最小 ...
- Node.js 从零开发 web server博客项目[接口]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...