博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BFS --- 素数环
阅读量:6277 次
发布时间:2019-06-22

本文共 1118 字,大约阅读时间需要 3 分钟。

 

【题目大意】

对话很坑爹,不过很有意思,直接看题干就可以了。
给你两个四位数a和b,现在要你从a经过变换得到b,并且变换的中间的每一位都要是素数,并且相邻两个素数之间只能有一个位不同。
【题目分析】
开始没想到怎么做,以为有什么高深的解法,后来经大神指点说是爆搜就可,思路才打开。

这题没什么陷阱,用爆搜时间复杂度也很低。

怎么爆搜呢?
我们将a的每个位都从0~9列举出来放入队列中,其实就是BFS,只不过是40出口的BFS,但是个位上必须将偶数除掉,顿时就少了一半的搜索量。

因为数据不是很大,所以我们可以用结构体数组来模拟队列。

BFS队列+素数判定

 

//Memory   Time//  256K       32MS#include
#include
using namespace std;struct Node{ int prime; int step;};bool JudgePrime(int digit){ if(digit==2 || digit==3) return true; else if(digit<=1 || digit%2==0) return false; else if(digit>3) { for(int i=3;i*i<=digit;i+=2) if(digit%i==0) return false; return true; }}int a,b;bool vist[15000];Node queue[15000];void BFS(void){ int i; //temporary int head,tail; head=tail=0; queue[head].prime=a; queue[tail++].step=0; vist[a]=true; while(head
>test; while(test--) { cin>>a>>b; memset(vist,false,sizeof(vist)); BFS(); } return 0;}
View Code

 

 

 

转载于:https://www.cnblogs.com/crazyacking/p/3762950.html

你可能感兴趣的文章
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
Android:apk签名
查看>>
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>
短址(short URL)
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>
IP地址的划分实例解答
查看>>
如何查看Linux命令源码
查看>>
运维基础命令
查看>>
入门到进阶React
查看>>
SVN 命令笔记
查看>>
检验手机号码
查看>>
重叠(Overlapped)IO模型
查看>>
Git使用教程
查看>>