BFS变换素数,POJ(3126)
题目链接:http://poj.org/problem?id=3126
解题报告:

#include <iostream>
#include <queue>
#include <stdio.h>
#include <string.h> using namespace std; #define MAXV 10000 bool Prime[MAXV]; ///素数表
bool vis[MAXV]; ///素数是否访问
int cnt[MAXV]; ///cnt[i]表示变换到素数i时,变换的次数,答案及cnt[last]; void init() { ///对素数打表
int i,j;
for(i=; i<=MAXV; i++) {
for(j=; j<i; j++)
if(i%j==) {
Prime[i]=false;
break;
}
if(j==i) Prime[i]=true;
}
} int bfs(int first,int last) {
queue <int>q;
int vtemp,t[];
memset(vis,false,sizeof(vis));
memset(cnt,,sizeof(cnt)); q.push(first);
vis[first]=true; while(!q.empty()) {
int v=q.front();
q.pop(); t[]=v/;
t[]=v%/;
t[]=v%/;
t[]=v%; for(int j=; j<; j++) {
int temp=t[j];
for(int i=; i<; i++) {
if(i!=temp) {
t[j]=i;
vtemp=t[]*+t[]*+t[]*+t[];
if(!vis[vtemp] && Prime[vtemp]) {
cnt[vtemp]=cnt[v]+;
vis[vtemp]=true;
q.push(vtemp);
}
if(vtemp==last) return cnt[vtemp];
}
t[j]=temp;
}
}
if(v==last) return cnt[v];
}
return -;
} int main() {
int n,a,b,key;
init();
scanf("%d",&n);
while(n--) {
scanf("%d%d",&a,&b);
key=bfs(a,b);
if(key!=-) printf("%d\n",key);
else printf("Impossible\n");
}
return ;
}
BFS变换素数,POJ(3126)的更多相关文章
- Prime Path(POJ - 3126)【BFS+筛素数】
Prime Path(POJ - 3126) 题目链接 算法 BFS+筛素数打表 1.题目主要就是给定你两个四位数的质数a,b,让你计算从a变到b共最小需要多少步.要求每次只能变1位,并且变1位后仍然 ...
- POJ - 3126 - Prime Path(BFS)
Prime Path POJ - 3126 题意: 给出两个四位素数 a , b.然后从a开始,每次可以改变四位中的一位数字,变成 c,c 可以接着变,直到变成b为止.要求 c 必须是素数.求变换次数 ...
- POJ 3126 Prime Path(素数路径)
POJ 3126 Prime Path(素数路径) Time Limit: 1000MS Memory Limit: 65536K Description - 题目描述 The minister ...
- BFS POJ 3126 Prime Path
题目传送门 /* 题意:从一个数到另外一个数,每次改变一个数字,且每次是素数 BFS:先预处理1000到9999的素数,简单BFS一下.我没输出Impossible都AC,数据有点弱 */ /**** ...
- 双向广搜 POJ 3126 Prime Path
POJ 3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16204 Accepted ...
- poj 3126 Prime Path( bfs + 素数)
题目:http://poj.org/problem?id=3126 题意:给定两个四位数,求从前一个数变到后一个数最少需要几步,改变的原则是每次只能改变某一位上的一个数,而且每次改变得到的必须是一个素 ...
- POJ 3126 Prime Path 素数筛,bfs
题目: http://poj.org/problem?id=3126 困得不行了,没想到敲完一遍直接就A了,16ms,debug环节都没进行.人品啊. #include <stdio.h> ...
- POJ - 3126 bfs + 素数筛法 [kuangbin带你飞]专题一
题意:给定两个四位素数作为终点和起点,每次可以改变起点数的某一位,且改变后的数仍然是素数,问是否可能变换成终点数字? 思路:bfs搜索,每次改变四位数中的某一位.素数打表方便判断新生成的数是否是素数. ...
- POJ 3126 Prime Path (素数+BFS)
题意:给两个四位素数a和b,求从a变换到b的最少次数,每次变换只能变换一个数字并且变换的过程必须也是素数. 思路:先打表求出四位长度的所有素数,然后利用BFS求解.从a状态入队,然后从个位往千位的顺序 ...
随机推荐
- 自动截取sql并合并,生成执行HQL
### 提取SQL语句 FILE_PATH="/data/SCRIPT" cat tables | while read file do echo "-----> ...
- SQL Server外部链接时报错:Error locating serverInstance specified
SQL Server外部链接时报错:Error locating server/Instance specified 连接时报错信息: 08001 sql server network interfa ...
- matlab的一些关于块分类的函数~~~
1. nlfilter(General sliding-neighborhood operations) B = nlfilter(A, [m n], fun),这是一个其中A是图像[m n]是图像 ...
- HandlerInterceptor拦截器使用总结
简介 SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对请求进行拦截和处理. 常见应用场景 1.权限检查:如检测请求是否具有登录权限,如果没有直接返回到登陆页面. ...
- Hadoop Intro - Configure
Hadoop学习(二) Hadoop配置文件参数详解 Hadoop运行模式分为安全模式和非安全模式,在这里,我将讲述非安全模式下,主要配置文件的重要参数功能及作用,本文所使用的Hadoop版本为2 ...
- TCP连接的ISN、连接建立超时及TCP的长短连接
问题现象: 一.TCP连接的ISN 之前我们说过初始建立TCP连接的时候的系列号(ISN)是随机选择的,那么这个系列号为什么不采用一个固定的值呢?主要有两方面的原因 防止同一个连接的不 ...
- CBoard数据分析实战
介绍 CBoard由上海楚果信息技术有限公司主导开源, 它不仅仅是一款自助BI数据分析产品, 还是开放的BI产品开发平台: 用户只需简单妥妥拽拽就能自助完成数据多维分析与报表设计 开发者能够简单扩展连 ...
- 三、oracle 表空间
SQL> --清除屏幕信息 SQL> clear screen SQL> --查看表空间 SQL> select * from v$tablespace; SQL> -- ...
- C#入门--索引器
C#入门--索引器 索引器允许类或结构的实例按照与数组相同的方式进行索引.索引器类似于属性,不同之处在于它们的访问器采用参数. 索引器概述 索引器使得对象可按照与数组相似的方法进行索引. get 访问 ...
- 如何绘制ER图
先画出多个实体(用长方形表示),然后是联系类型(菱形),和属性(椭圆).