题目:

孤单的zydsg又一次孤单的度过了520,不过下一次不会再这样了。zydsg要做些改变,他想去和素数小姐姐约会。
所有的路口都被标号为了一个4位素数,zydsg现在的位置和素数小姐姐的家也是这样,如果两个路口间只差1个数字,则有一条路连通两个路口。(例如1033和1073间有一条路连接)
现在,你知道了zydsg的位置和素数小姐姐的家,问最少zydsg要走多少条路才能见到素数小姐姐。例如:如果zydsg在1033,素数小姐姐的家在8179,最少要走6条街,走法为:
1033
1733
3733
3739
3779
8779
8179
Input
输入数据有多组,首先是一个数字n,代表之后有n组数据。 其次,在每一组输入中,都包含两个数字a和b,代表zydsg的位置和素数小姐姐家的位置。 其中,a和b都是四位数,而且不含前导0。
Output
每组输入输出一行,表示zydsg最少需要走多少条路。若不存在合法的路径,则输出单词“Impossible”。
Sample Input
3
1033 8179
1373 8017
1033 1033
Sample Output
6
7
0

分析与解答:

水题,一个 结点 改个位十位百位千位,最终到达要求的答案,仍然是层次遍历,把各个位的数都变一遍存到队列里,然后一层存完,拿出队首,再往里面存,直到队首刚好是答案,那就输出并return。
注意这个是多实例,也就是说需要多个queue,所以每次bfs之前注意把前面的queue清空,这题我是把queue定义到外面了,如果定义到bfs里面,就不用再清空queue了
代码参考:
https://blog.csdn.net/LYHVOYAGE/article/details/18228531

#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std;int n, m;
const int N = 1e4 + 100;
int vis[N];
struct node
{int x, step;
};
queue<node> Q;int prime[10001];
int pri(int k){for(int i=2;i*i<=k;++i){if(k%i==0) return 0;}return 1;
}void abd(){memset(prime,0,sizeof(prime));for(int i=1000;i<=9999;++i){if(pri(i)) prime[i]=1;}
}void BFS(int n)
{node tmp;tmp.x = n;tmp.step = 0;Q.push(tmp);int X, STEP, i;while(!Q.empty()){node tmp;tmp = Q.front();Q.pop();X = tmp.x;STEP = tmp.step;if(X == m){printf("%d\n",STEP);return ;}for(i = 1; i <= 9; i += 2) //个位{int s = X / 10 * 10 + i;if(s != X && !vis[s] && prime[s]){vis[s] = 1;node temp;temp.x = s;temp.step = STEP + 1;Q.push(temp);}}for(i = 0; i <= 9; i++) //十位{int s = X / 100 * 100 + i * 10 + X % 10;if(s != X && !vis[s] && prime[s]){vis[s] = 1;node temp;temp.x = s;temp.step = STEP + 1;Q.push(temp);}}for(i = 0; i <= 9; i++) //百位{int s = X / 1000 * 1000 + i * 100 + X % 100;if(s != X && !vis[s] && prime[s]){vis[s] = 1;node temp;temp.x = s;temp.step = STEP + 1;Q.push(temp);}}for(i = 1; i <= 9; i++) //千位{int s = i * 1000 + X % 1000;if(s != X && !vis[s] && prime[s]){vis[s] = 1;node temp;temp.x = s;temp.step = STEP + 1;Q.push(temp);}}}printf("Impossible\n");return ;
}int main()
{int t, i;scanf("%d",&t);abd();while(t--){while(!Q.empty()) Q.pop();scanf("%d%d",&n,&m);memset(vis,0,sizeof(vis));vis[n] = 1;BFS(n);}return 0;
}

(BFS)Prime Path (poj3126)相关推荐

  1. 解决JSP路径问题的方法(jsp文件开头path, basePath作用)

    解决JSP路径问题的方法(jsp文件开头path, basePath作用) 参考文章: (1)解决JSP路径问题的方法(jsp文件开头path, basePath作用) (2)https://www. ...

  2. 广搜(BFS)和深搜(DFS)

    广搜(BFS)和深搜(DFS) 文章目录 广搜(BFS)和深搜(DFS) 一.广搜(BFS) 二.深搜(DFS) 一.广搜(BFS) #include <bits/stdc++.h> us ...

  3. Prime Path(bfs)广度优先搜索

    题目描述 The ministers of the cabinet were quite upset by the message from the Chief of Security stating ...

  4. poj3216 Prime Path(BFS)

    题目传送门  Prime Path The ministers of the cabinet were quite upset by the message from the Chief of Sec ...

  5. POJ 3126 Prime Path(BFS + 素数打表)

    题意:给定两个四位素数, 从一个素数到另一个素数,最少用几步,可以一次更改四位中的任意一位,但每次改变都只能是素数. 解题思路:四位数每一位情况有十种情况0-9, 四位共有40种情况, 枚举40种情况 ...

  6. POJ - 3126 - Prime Path(BFS)

    Prime Path POJ - 3126 题意: 给出两个四位素数 a , b.然后从a开始,每次可以改变四位中的一位数字,变成 c,c 可以接着变,直到变成b为止.要求 c 必须是素数.求变换次数 ...

  7. LeetCode 773. 滑动谜题(BFS 地图状态转换的最短距离)

    1. 题目 在一个 2 x 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示. 一次移动定义为选择 0 与一个相邻的数字(上下左右)进行交换. 最终当板 b ...

  8. 【PTA】龙舌兰酒吧 (BFS求双源最短路)

    目录 1.题目描述 2.输入输出 3.解题思路 4.样例解析 5.代码实现 1.题目描述 有一个大小为n*m的矩形小镇,城镇上有房屋("#"表示无法通过),有空地(".& ...

  9. WUST 2090 HLD与停车场(bfs||dfs||暴力模拟||巧妙思维)

    2090: HLD与停车场 Time Limit: 1 Sec   Memory Limit: 128 MB   64bit IO Format: %lld Submitted: 21   Accep ...

最新文章

  1. sqlplus怎样将名次显示在表的后面_一分一段表怎么用?2019年辽宁高考一分一段表...
  2. 强/若类型语言 动/静态语言
  3. java中使用jython_将Jython嵌入到您的Java代码库中
  4. Cisco ASA站点间穿越nat互相访问的实验
  5. Hadoop系列之Reporter,Partitioner,JobConf, JobClient
  6. 什么是 Hadoop 生态系统
  7. [x-means] 1.x-means简介
  8. 【Java爬虫】接口模拟微信公众号登录,搜索公众号,获取公众号文章,java实现
  9. Android MTK PDAF流程
  10. yolov5 烟雾和火焰检测
  11. 微软苏州校招笔试 12月27日 By Java
  12. java、.net、IOS、Android自学编程学习视频与资料
  13. 微信朋友圈这样招生,才不会被屏蔽!(附实操案例)
  14. 原型设计工具Axure RP9下载、中文语言操作说明(赠授权码)
  15. 插槽和axios的封装
  16. THRESH_OTSU mode: > ‘src_type == CV_8UC1 || src_type == CV_16UC1‘ > where > ‘src_type‘ is 6
  17. b站推荐怎么重置_b站手机怎么上传视频
  18. 机器人总动员片尾曲歌词_机器人瓦力 主题曲 很感人的那首歌 叫什么名字
  19. 如何从照片中提取文字?
  20. JAVA资深架构师成长路线-架构师筑基必备技能-深入Tomcat底层

热门文章

  1. plsql developer 安装在win7 64位电脑路径问题
  2. vb中picturebox透明时看到下面的picturebox中图片
  3. 使用 Packer、Ansible 和 Terraform 构建不可变的基础设施
  4. Spring经典面试题
  5. boost库下的deadline_timer和steady_timer 区别
  6. 转自知乎-我见过最通俗易懂的KMP算法详解
  7. Linux使用cmake编译项目,如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake)...
  8. 请解释自动装配模式的区别?_如何从齿条优化方面有效节约机床装配时间
  9. 打印更无缝:微软改善Win11中通用打印体验
  10. RTSP摄像机为什么还保留MJPEG编码格式