poj3126——Prime Path
来源:互联网 发布:企业数据库软件 编辑:程序博客网 时间:2024/06/02 01:58
题目大意:给出两个四位素数,每次改变只能改四位中的一位,问最少经过几次改变能将第一个数变为第二个数
输入:case个数n(最多不超过100个)
第i个case的两个四位素数(不以0开头)
输出:最少改变次数/impossible
分析:bfs搜索
先打印素数表,再用队列进行bfs搜索
代码:转载自http://blog.csdn.net/wangjian8006/article/details/7461966
- #include <iostream>
- #include <queue>
- using namespace std;
- #define MAXV 10000
- bool prime[MAXV];
- void init(){ //对素数打表
- int i,j;
- for(i=1000;i<=MAXV;i++){
- for(j=2;j<i;j++)
- if(i%j==0){
- prime[i]=false;
- break;
- }
- if(j==i) prime[i]=true;
- }
- }
- int bfs(int first,int last){
- bool dis[MAXV];
- queue <int>q;
- int v,i,j,temp,vtemp,count[MAXV],t[4];
- memset(dis,false,sizeof(dis));
- memset(count,0,sizeof(count));
- q.push(first);
- dis[first]=true;
- while(!q.empty()){
- v=q.front();
- q.pop();
- if(v==last) return count[v];
- t[0]=v/1000;
- t[1]=v%1000/100;
- t[2]=v%100/10;
- t[3]=v%10;
- for(j=0;j<4;j++){
- temp=t[j];//把第j位的数字先保存下来
- for(i=0;i<10;i++)
- if(i!=temp){
- t[j]=i;
- vtemp=t[0]*1000+t[1]*100+t[2]*10+t[3];
- if(!dis[vtemp] && prime[vtemp]){
- count[vtemp]=count[v]+1;
- dis[vtemp]=true;
- q.push(vtemp);
- }
- if(vtemp==last) return count[vtemp];
- }
- t[j]=temp;
- }
- }
- return -1;
- }
- int main(){
- int n,a,b,key;
- init();
- scanf("%d",&n);
- while(n--){
- scanf("%d%d",&a,&b);
- key=bfs(a,b);
- if(key!=-1) printf("%d\n",key);
- else printf("Impossible\n");
- }
- return 0;
- }
阅读全文
0 0
- POJ3126——Prime Path
- POJ3126——Prime Path
- POJ3126——Prime Path
- poj3126——Prime Path
- BFS—POJ3126-Prime Path
- poj3126——Prime Path(BFS)
- POJ3126 Prime Path —— BFS + 素数表
- poj3126 - Prime Path
- hdu1973 || poj3126 Prime Path
- POJ3126 Prime Path
- POJ3126--Prime Path
- POJ3126 Prime Path
- [POJ3126]Prime Path+BFS
- POJ3126 Prime Path 素数
- Prime Path(poj3126)
- poj3126 Prime Path
- POJ3126--- Prime Path
- POJ3126 Prime Path(bfs)
- CTreeCtrl自绘
- 如何取得Dataset中表table1的某字段的最大值,最小值,平均值,和等
- android studio 3.0 android sdk manager 设置国内镜像加速方法
- 三分钟教你学Git(八) 之 删除分支
- syslog使用介绍
- poj3126——Prime Path
- 用 Swfit 搭建一个完整项目
- ubuntu python 版本切换
- zynq pl irq61,irq62,irq63号中断存在重复响应的问题
- TensorFlow在MNIST中的应用-无监督学习-自编码器(autoencoder)和encoder
- 获取windows系统所有运行进程
- [SCOI2007]修车
- 自己eclipse中的项目如何利用tomcat跑起来
- js 设置某元素以外区域点击事件