BFS --- 素数环
【题目大意】
对话很坑爹,不过很有意思,直接看题干就可以了。
给你两个四位数a和b,现在要你从a经过变换得到b,并且变换的中间的每一位都要是素数,并且相邻两个素数之间只能有一个位不同。
【题目分析】
开始没想到怎么做,以为有什么高深的解法,后来经大神指点说是爆搜就可,思路才打开。
这题没什么陷阱,用爆搜时间复杂度也很低。
怎么爆搜呢?
我们将a的每个位都从0~9列举出来放入队列中,其实就是BFS,只不过是40出口的BFS,但是个位上必须将偶数除掉,顿时就少了一半的搜索量。
因为数据不是很大,所以我们可以用结构体数组来模拟队列。
BFS队列+素数判定
//Memory Time
// 256K 32MS
#include<iostream>
#include<cstring>
using namespace std; struct Node
{
int prime;
int step;
}; bool JudgePrime(int digit)
{
if(digit== || digit==)
return true;
else if(digit<= || digit%==)
return false;
else if(digit>)
{
for(int i=;i*i<=digit;i+=)
if(digit%i==)
return false;
return true;
}
} int a,b;
bool vist[];
Node queue[]; void BFS(void)
{
int i; //temporary
int head,tail;
head=tail=;
queue[head].prime=a;
queue[tail++].step=;
vist[a]=true; while(head<tail)
{
Node x=queue[head++];//出队
if(x.prime==b)
{
cout<<x.step<<endl;
return;
} int unit=x.prime%;
int deca=(x.prime/)%;
for(i=;i<=;i+=)
{
int y=(x.prime/)*+i;
if(y!=x.prime && !vist[y] && JudgePrime(y))
{
vist[y]=true;
queue[tail].prime=y;
queue[tail++].step=x.step+;
}
}
for(i=;i<=;i++)
{
int y=(x.prime/)*+i*+unit;
if(y!=x.prime && !vist[y] && JudgePrime(y))
{
vist[y]=true;
queue[tail].prime=y;
queue[tail++].step=x.step+;
}
}
for(i=;i<=;i++)
{
int y=(x.prime/)*+i*+deca*+unit;
if(y!=x.prime && !vist[y] && JudgePrime(y))
{
vist[y]=true;
queue[tail].prime=y;
queue[tail++].step=x.step+;
}
}
for(i=;i<=;i++)
{
int y=x.prime%+i*;
if(y!=x.prime && !vist[y] && JudgePrime(y))
{
vist[y]=true;
queue[tail].prime=y;
queue[tail++].step=x.step+;
}
}
} cout<<"Impossible"<<endl;
return;
} int main(void)
{
int test;
cin>>test;
while(test--)
{
cin>>a>>b;
memset(vist,false,sizeof(vist));
BFS();
}
return ;
}
BFS --- 素数环的更多相关文章
- nyoj 488 素数环
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简 ...
- nyoj 素数环
算法:搜索 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简便起见,我们规定每个素数环都从1开始.例如,下图就是6的一个素数环. 输 ...
- nyoj素数环
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简 ...
- ny488 素数环
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简便起 ...
- DFS搜索题素数环
素数环: 输入整数1,2,3,4,5,···,n组成一个环,使得相邻两个整数之和均为素数. 输出时从整数1开始逆时针排列.同一个环应恰好输出一次.n<=16. Sample: input: 6 ...
- HDU - 1016 Prime Ring Problem 经典素数环
Prime Ring Problem A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., ...
- ACM_素数环(dfs)
Problem Description: 如图所示,环由n个圆组成. 将自然数1,2,...,n分别放入每个圆中,并且两个相邻圆中的数字总和应为素数. 注意:第一个圆圈的数量应该始终为1. Input ...
- EOJ 1114 素数环
题意 一个由自然数 1…n (n≤18) 素数环就是如下图所示,环上任意两个节点上数值之和为素数. 1 / \ 4 2 \ / 3 Input 输入只有一个数 n,表示你需要建立一个 1… ...
- HDU 1016 素数环(dfs + 回溯)
嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 一道很典型的dfs+回溯: 根据题意首先进行初始化,即第一个位置为1,然后进行dfs, ...
随机推荐
- MongoDB 部署复制集(副本集)
部署MongoDB复制集(副本集) 环境 操作系统:Ubuntu 18.04 MongoDB: 4.0.3 服务器 首先部署3台服务器,1台主节点 + 2台从节点 3台服务器的内容ip分别是: 1 ...
- 《OKR工作法》| 一次说太多等于什么都没说
在<OKR工作法>中,作者用汉娜和杰克一起创造TeaBee的故事来为我们讲解OKR可以解决的问题以及如何去实践OKR.给我印象最深的他们用OKR目标管理失败的时候埋怨这种管理方法是有问题的 ...
- JAVA基础--MySQL(二)
数据库约束 1.基础限制 ① 单一表内字节量总和不能超过65535,null 占用一个字节空间 ② varchar存储255 以内字节占用一个字节表示长度,255以上自己则占用两个字节表示长度 ③ ...
- Shell 变量自增实现方法
i=`expr $i + `; let i+=; ((i++)); i=$[$i+]; i=$(( $i + )) 参考: https://www.cnblogs.com/faithfu/p/9472 ...
- poi导入读取时间格式问题
万能处理方案: 所有日期格式都可以通过getDataFormat()值来判断 yyyy-MM-dd-----14 yyyy年m月d日--- 31 yyyy年m月-------57 m月d日 ---- ...
- srs安装与ffmpeg推流
环境说明:ubuntu 16.04 当前目录为~/. 一. 下载 git clone https://github.com/ossrs/srs.git 二.部署SRS 关闭防火墙,执行如下命令. uf ...
- UnityVR案例 - VR僵尸大战(HTC VIVE)
使用HTCvive设备开发的一款射击类游戏(Unity5.6.3),玩家在游戏中使用手枪.手榴弹或者技能杀死僵尸. 亮点功能:手势识别,语音唤醒(关键词识别) 手势识别:玩家使用手柄在游戏中绘制事先录 ...
- Incorrect string value: '\xF0\x9F\x98\xAD",...' for column 'commentContent' at row 1
我分为下面三个步骤来解决: (1):修改mysql数据库的编码为uft8mb4 (2):修改数据表的编码为utf8mb4 (3):修改连接数据库的连接代码 更改数据库编码:ALTER DATABASE ...
- SpringBoot过滤器过滤get及post请求中的XSS和SQL注入
1.创建XssAndSqlHttpServletRequestWrapper包装器,这是实现XSS过滤的关键,在其内重写了getParameter,getParameterValues,getHead ...
- MYSQL定时任务-定时清除备份数据
背景 由于项目需要,每个月的历史存量数据需要进行一个归档和备份操作,以及一些日志表需要进行一个明细字段清除,让mysql数据库磁盘节省空间.则需要一些定时任务来定时清理这些数据. 技术选型 Java ...