被坑了3个小时,本来以为算法错了,谁知道,竟然是素数筛弄错了

!!!

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
using namespace std;
int a[10001];
int v[10001];
int n,m;
struct node
{
int ans,x;
}q[100001];
void bfs()
{
memset(v,0,sizeof(v));
struct node t,f;
int e=0;
int s=0;
t.ans=0;
t.x=n;
v[t.x]=1;
q[e++]=t;
while(s<e)
{
t=q[s++];
if(t.x==m)
{
printf("%d\n",t.ans);
break;
}
for(int i=0;i<=9;i++)
{
if(v[(t.x/10)*10+i]==0&&a[(t.x/10)*10+i]==1)
{
f.x=(t.x/10)*10+i;
f.ans=t.ans+1;
q[e++]=f;
v[(t.x/10)*10+i]=1;
}
if(v[(t.x/100)*100+t.x%10+i*10]==0&&a[(t.x/100)*100+t.x%10+i*10]==1)
{
f.x=(t.x/100)*100+t.x%10+i*10;
f.ans=t.ans+1;
q[e++]=f;
v[(t.x/100)*100+t.x%10+i*10]=1;
}
if(v[(t.x/1000)*1000+(t.x/10)%10*10+t.x%10+i*100]==0&&a[(t.x/1000)*1000+(t.x/10)%10*10+t.x%10+i*100]==1)
{
f.x=(t.x/1000)*1000+(t.x/10)%10*10+t.x%10+i*100;
f.ans=t.ans+1;
q[e++]=f;
v[(t.x/1000)*1000+(t.x/10)%10*10+t.x%10+i*100]=1;
}
}
for(int i=1;i<=9;i++)
{
if(v[t.x%10+(t.x/10)%10*10+(t.x/10/10)%10*100+i*1000]==0&&a[t.x%10+(t.x/10)%10*10+(t.x/10/10)%10*100+i*1000]==1)
{
f.x=t.x%10+(t.x/10)%10*10+(t.x/10/10)%10*100+i*1000;
f.ans=t.ans+1;
q[e++]=f;
v[t.x%10+(t.x/10)%10*10+(t.x/10/10)%10*100+i*1000]=1;
}
}
}
}
int main()
{
a[0]=0;
a[1]=0;
a[2]=1;
int t=(int )sqrt(10000*1.0);
for(int i=3;i<10000;i++)
{
if(i%2==0)
a[i]=0;
else a[i]=1;
}
for(int i=3;i<=t;i++)
{
if(a[i]==1)
{
for(int j=2*i;j<10000;j=j+i)
a[j]=0;
}
}
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
bfs();
}
return 0;
}

poj3126的更多相关文章

  1. POJ3126 Prime Path (bfs+素数判断)

    POJ3126 Prime Path 一开始想通过终点值双向查找,从最高位开始依次递减或递增,每次找到最接近终点值的素数,后来发现这样找,即使找到,也可能不是最短路径, 而且代码实现起来特别麻烦,后来 ...

  2. 《挑战程序设计竞赛》2.6 数学问题-素数 AOJ0009 POJ3126 3421 3292 3641

    AOJ0009 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0009 题意 求不大于n的素数个数. 思路 素数筛法可解,筛法过程中 ...

  3. POJ-3126 Prime Path---BFS+素数打表

    题目链接: https://vjudge.net/problem/POJ-3126 题目大意: 给两个四位数a,b 每次改变a中的一位而且改动之后的必须是素数,问最少改动几次可以到b?(永远达不到b就 ...

  4. poj3126 筛素数+bfs

    //Accepted 212 KB 16 ms //筛素数+bfs #include <cstdio> #include <cstring> #include <iost ...

  5. POJ3126 Prime Path

    http://poj.org/problem?id=3126 题目大意:给两个数四位数m, n, m的位数各个位改变一位0 —— 9使得改变后的数为素数, 问经过多少次变化使其等于n 如: 10331 ...

  6. POJ3126 Prime Path(BFS)

    题目链接. AC代码如下: #include <iostream> #include <cstdio> #include <cstring> #include &l ...

  7. poj3126(bfs)

    题目链接:http://poj.org/problem?id=3126 题意:给两个四位数n,m,将n变成m需要多少步,要求每次只能改变n的某一位数,即改变后的数与改变前的数只有一位不同,且每次改变后 ...

  8. poj3126解题报告

    题意:简单的说就是:有一个人门牌号是一个四位数的整数,并且还是一个素数,现在他想要换成另外一个四位数且是素数的门牌号,而且,每次都只能更换这个四位数的一个位置的数 ,也就是每换一次都只改变一个数字,而 ...

  9. poj3126 Prime Path 广搜bfs

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

  10. Prime Path[POJ3126] [SPFA/BFS]

    描述 孤单的zydsg又一次孤单的度过了520,不过下一次不会再这样了.zydsg要做些改变,他想去和素数小姐姐约会. 所有的路口都被标号为了一个4位素数,zydsg现在的位置和素数小姐姐的家也是这样 ...

随机推荐

  1. python string.py 源码分析 一

    # Some strings for ctype-style character classification c风格字符串 whitespace = ' \t\n\r\v\f' #空白字符 \t 制 ...

  2. 10.5ORM回顾(2)

    2018-10-5 14:47:57 越努力越幸运!永远不要高估自己! ORM的聚合和分组查询!!! # #####################聚合和分组##################### ...

  3. JVM内存GC的骗局——JVM不抛出OOM但内存已经泄露

    概述 在日常测试中,我们会去重点观察java的内存使用情况,比如:进程会抛出OOM异常,不再接收新的请求:响应时间在固定时间段内变长,超时或者不响应,CPU使用率时常像过山车一样等.有时候JVM还会发 ...

  4. ubuntu-18.04 root登录图形界面失败问题解决方案

    一.设置root密码 二.进入/etc/pam.d目录 主要修改两个文件(圈了红色框框),记得命令行下切换root账户(sudo -i)进行vim修改,刚安装的ubuntu没有vim支持,请根据提示进 ...

  5. 网络通信协议八之UDP协议详解

    视频传输中使用UDP协议比较多 UDP协议的责任 >>创建进程到进程间的通信(由端口号完成) >>有限的差错控制,出现差错悄悄丢弃报文(注意这点和TCP协议的区别)

  6. 引用:WebAPI中的定时处理-使用Quartz.Net

    引用: https://blog.csdn.net/lordwish/article/details/78926252 主要是给自己做个记录,不用到处找,这篇文章写的很全,推荐 文中:在项目的Glob ...

  7. VIVE pro和hololens购买调研

    VIVE pro专业版是一款虚拟现实头盔 VIVE Pro专业版头显 ¥6,488 仅含头显,不含定位器及操控手柄送VIVEPORT会员服务2个月 订购VIVE Pro专业版头显,加 ¥2,400可得 ...

  8. [No000010D]Git6/9-分支管理

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...

  9. MyBatis中choose when正确写法

    <choose> <when test="scoreRange!=null and scoreRange eq 1"> AND sc.score <! ...

  10. jquery validate强大的jquery表单验证插件

    jquery validate的官方演示和文档地址: 官方网站:http://jqueryvalidation.org/ 官方演示:http://jqueryvalidation.org/files/ ...