一道经典的BFS

用四个for搜索四位就行了,只要能推出怎么只变4位中的一位就很水了

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
int t;
int n,m;
int book[]={};//记录有没有搜过
struct node//x表示现在的数,step表示当前的次数
{
int x;
int step;
};
queue<node> q;//广搜队列
bool zyc_pd(int x)//判断素数
{
if(x==||x==)return false;
else if(x==||x==)return true;
else
{
for(int i=;i<=(int)sqrt(x);i++)
{
if(x%i==)return false;
}
return true;
} }
void bfs()
{
int x1,step1,i;
while(!q.empty())
{
node tmp;
tmp=q.front();
q.pop();
x1=tmp.x;//赋初始值
step1=tmp.step;//赋初始值
//cout<<x1<<endl;
if(x1==m)//如果搜到结果,输出
{
cout<<step1<<endl;
return;
}
for(i=;i<=;i+=)//个位,从一到九的奇数(因为是素数)
{
int yy=x1/*+i;//去掉个位再加上搜到的个位
if(yy!=x1&&!book[yy]&&zyc_pd(yy))//不能与上一步数一样+不能重复搜+是素数
{
book[yy]=;//标记为搜过
node temp;
temp.x=yy;//制为当前的值
temp.step=step1+;//搜索次数加1
q.push(temp);
}
}
for(i=;i<=;i++)//十位同理
{
int yy=x1/*+i*+x1%;
if(yy!=x1&&!book[yy]&&zyc_pd(yy))
{
book[yy]=;
node temp;
temp.x=yy;
temp.step=step1+;
q.push(temp);
}
}
for(i=;i<=;i++)//百位同理
{
int yy=x1/*+i*+x1%;
if(yy!=x1&&!book[yy]&&zyc_pd(yy))
{
book[yy]=;
node temp;
temp.x=yy;
temp.step=step1+;
q.push(temp);
}
}
for(i=;i<=;i++)//千位
{
int yy=i*+x1%;//只换千位
if(yy!=x1&&!book[yy]&&zyc_pd(yy))
{
book[yy]=;
node temp;
temp.x=yy;
temp.step=step1+;
q.push(temp);
}
}
}
cout<<"Impossible"<<endl;//如果搜不到输出Impossible
return;
}
int main()
{
cin>>t;
while(t--)
{
while(!q.empty())q.pop();//清空队列
cin>>n>>m;
memset(book,,sizeof(book));//初始化book数组
book[n]=;//把book【n】制为搜过
node tmp;
tmp.x=n;//当前的数为n
tmp.step=;//当前步数为0
q.push(tmp);
bfs();
}
return ;
}
请各位大佬斧正(反正我不认识斧正是什么意思)

洛谷 UVA12101 Prime Path 题解的更多相关文章

  1. 洛谷P2832 行路难 分析+题解代码【玄学最短路】

    洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...

  2. 【洛谷P3960】列队题解

    [洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...

  3. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  4. 洛谷P1577 切绳子题解

    洛谷P1577 切绳子题解 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2为后的小数). 输入输出格 ...

  5. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  6. 洛谷 P1220 关路灯 题解

    Description 有 $n$ 盏路灯,每盏路灯有坐标(单位 $m$)和功率(单位 $J$).从第 $c$ 盏路灯开始,可以向左或向右关闭路灯.速度是 $1m/s$.求所有路灯的最少耗电.输入保证 ...

  7. 【洛谷P3410】拍照题解(最大权闭合子图总结)

    题目描述 小B有n个下属,现小B要带着一些下属让别人拍照. 有m个人,每个人都愿意付给小B一定钱让n个人中的一些人进行合影.如果这一些人没带齐那么就不能拍照,小B也不会得到钱. 注意:带下属不是白带的 ...

  8. [BZOJ 3039&洛谷P4147]玉蟾宫 题解(单调栈)

    [BZOJ 3039&洛谷P4147]玉蟾宫 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. ...

  9. 洛谷 P3695 CYaRon!语 题解 【模拟】【字符串】

    大模拟好啊! 万一远古计算机让我写个解释器还真是得爆零了呢. 题目背景 「千歌です」(我是千歌).「曜です」(我是曜).「ルビィです」(我是露比).「3人合わせて.We are CYaRon! よろし ...

随机推荐

  1. 【LEETCODE】62、数组分类,hard级别,题目:42、128

    package y2019.Algorithm.array.medium; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.a ...

  2. 数据采集,SCADA, 使用MQTT的方式来进行消息单/双向传输,什么场景使用MQTT

    1.先来了解下: 看完得出关键字:发布.订阅模式,事件驱动,主题,生产与消费解耦 2.轻量级 普通的socket连接对服务器的消耗太大了,socket服务端是很消耗资源的,一台服务器能链接的客户端是有 ...

  3. JS Web API 拖拽对话框案例

    <style> .login-header { width: 100%; text-align: right; height: 30px; font-size: 24px; line-he ...

  4. Mysql】Mysql中CURRENT_TIMESTAMP,CURRENT_DATE,CURRENT_TIME,now(),sysdate()各项值的区别

    CURRENT_TIMESTAMP,CURRENT_DATE,CURRENT_TIME,now(),sysdate()各项值的区别,我们可以通过在终端下,查看结果就能知道: SELECT CURREN ...

  5. RHEL6搭建网络yum源软件仓库

    RHEL的更新包只对注册用户生效,所以需要自己手动改成Centos的更新包 一.查看rhel本身的yum安装包 rpm -qa | grep yum 二.卸载这些软件包 rpm -qa | grep ...

  6. Git版本管理工具使用

    1.Git简介 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核 ...

  7. 雪妖现世:给SAP Fiori Launchpad增添雪花纷飞的效果

    1995年7月,台湾大宇公司发布了一款国产单机角色扮演游戏神作:<仙剑奇侠传1>,所谓"一包烟,一杯茶",就能在电脑面前坐一整天. 这么经典的游戏Jerry当然已经通关 ...

  8. Gitlab 重置 root 密码

    要重置root密码,请先使用root权限登录服务器.使用以下命令启动Ruby on Rails控制台: gitlab-rails console production 等到控制台加载完毕,您可以通过搜 ...

  9. Redis中如何发现并优化big key?

    Redis中的大key一直是重点需要优化的对象,big key既占用比较多的内存,也可能占用比较多的网卡资源,造成redis阻塞,因此我们需要找到这些big key进行优化 一.寻找big key 通 ...

  10. Ubuntu16.04 网络配置

    Ubuntu 网络配置 安装Ubuntu操作系统之后,为了通过Xshell连接主机,或者连接其他主机.需要进行如下网络配置和ssh服务配置. 1 网络配置 1.1 修改网络配置信息 sudo vi / ...