题意:一个四位数的质数,每次只能变换一个数字,而且变换后的数也要为质数。给出两个四位数的质数,输出第一个数变换为第二个数的最少步骤。

利用广搜就能很快解决问题了。还有一个要注意的地方,千位要大于0。例如0373这个数不符合要求。

#include <iostream>
#include <cstdio>
#include <queue>
#include <cmath>
#include <map>
using namespace std;struct Struct
{int num;int step;
};
bool Prime(int a) //判断是否为质数
{for(int i=2;i<=sqrt(a);i++)if(a%i==0)return false;return true;
}
int bfs(int a,int b)
{queue<Struct>q;map<int,bool>m; //用map来标记数字是否被访问过
    Struct temp,next;temp.num=a;temp.step=0;m[a]=true;q.push(temp);while(!q.empty()){temp=q.front();if(temp.num==b)return temp.step;q.pop();for(int i=1;i<10;i++) //变换千位
        {next=temp;next.num=next.num%1000+i*1000;if(!m[next.num] && Prime(next.num)){m[next.num]=true;next.step++;q.push(next);}}int x=100;for(int i=0;i<3;i++) //变换百位,十位,个位
        {for(int j=0;j<10;j++){next=temp;next.num=next.num%x+j*x+next.num/(x*10)*(x*10);if(!m[next.num] && Prime(next.num)){m[next.num]=true;next.step++;q.push(next);}}x=x/10;}}return -1;
}
int main()
{//freopen("in.txt","r",stdin);int n;scanf("%d",&n);while(n--){int a,b;scanf("%d%d",&a,&b);int ans=bfs(a,b);if(ans!=-1)printf("%d\n",ans);elseprintf("Impossible\n");}return 0;
}

转载于:https://www.cnblogs.com/pach/p/5779016.html

POJ 3126 Prime Path 简单广搜(BFS)相关推荐

  1. POJ 3126 - Prime Path + Python(BFS)

    ()原题链接: # 原题:POJ 3126 - Prime Path | 眈眈探求 # 解题思路:https://blog.csdn.net/LYHVOYAGE/article/details/182 ...

  2. POJ - 3126 - Prime Path(BFS)

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

  3. POJ 3126 Prime Path(BFS 数字处理)

    意甲冠军  给你两个4位质数a, b  每次你可以改变a个位数,但仍然需要素数的变化  乞讨a有多少次的能力,至少修改成b 基础的bfs  注意数的处理即可了  出队一个数  然后入队全部能够由这个素 ...

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

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

  5. poj 3126 Prime Path

    看题目... 看解题报告... 敲.... 题意转自:優YoU  http://user.qzone.qq.com/289065406/blog/1303623014 大致题意: 给定两个四位素数a  ...

  6. POJ 3126 Prime Path BFS搜索

    题意:就是找最短的四位数素数路径 分析:然后BFS随便搜一下,复杂度最多是所有的四位素数的个数 #include<cstdio> #include<algorithm> #in ...

  7. POJ 3126 Prime Path(筛法,双向搜索)

    题意:一个4位的素数每次变动一个数位,中间过程也要上素数,问变成另一个的最小步数. 线性筛一遍以后bfs就好.我写的双向,其实没有必要. #include<cstdio> #include ...

  8. POJ 3126 Prime Path

    水题:直接判断素数+bfs 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #in ...

  9. hdu-2612-Find a way(广搜,bfs)

    Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year ...

最新文章

  1. iOS翻页视图控制器UIPageViewController的应用
  2. python cocos2d菜鸟教程_(译)cocos2d菜单教程:第一部分
  3. python字典里可以放列表吗_学习python之列表及字典
  4. MSSQL的多层嵌套查询
  5. [react] 写个例子说明什么是JSX的内联条件渲染
  6. Python 两种装饰器
  7. chrome浏览器开发者工具F12中某网站的sources下的源码如何批量保存?
  8. Android-获取系统的应用程序的信息
  9. 关闭window 8.1 的skydrive
  10. Flex布局使用总结
  11. 软件开发项目过程管理文档
  12. java获取某年度有多少周_java获取一年共有多少周
  13. python开源IP代理池--IPProxys
  14. LNK2019 无法解析的外部符号 __imp__PyRun_SimpleStringFlags
  15. 置信区间 置信水平 边际误差
  16. 1908: 【18NOIP提高组】填数游戏
  17. 氢os android8,一加8T或预装氢OS11系统,基于Android 11定制
  18. 苹果使用过程中的小技巧(合集)
  19. display常用属性值
  20. 做领导要会说话!高情商的18个说话技巧,受益无穷!

热门文章

  1. java 静态内部类 内部类_Java中内部类和静态内部类的区别
  2. python效率numpy_Python数据处理性能对比,原生,Pandas,Numpy哪个更优秀
  3. python内置数据结构_Python内置数据结构(一)
  4. springboot banner.txt 在线制作
  5. ajax请求传递参数的方式,Ajax请求 一般处理程序参数传递的几种方式
  6. 最大k乘积的时间复杂度_惊,我还不会算时间复杂度!
  7. excel筛选排序从小到大_excel筛选怎么用教程 重复数据多个条件筛选功能教学
  8. 相分离在聚集多价信号蛋白过程中的作用Phase transitions in the assembly of multivalent signalling proteins
  9. exchange无法收发邮件_MAPI session超过Exchange最大限制,邮件发送失败的终极解决方法...
  10. 美国算法交易的影响和启示