poj3126
被坑了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的更多相关文章
- POJ3126 Prime Path (bfs+素数判断)
POJ3126 Prime Path 一开始想通过终点值双向查找,从最高位开始依次递减或递增,每次找到最接近终点值的素数,后来发现这样找,即使找到,也可能不是最短路径, 而且代码实现起来特别麻烦,后来 ...
- 《挑战程序设计竞赛》2.6 数学问题-素数 AOJ0009 POJ3126 3421 3292 3641
AOJ0009 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0009 题意 求不大于n的素数个数. 思路 素数筛法可解,筛法过程中 ...
- POJ-3126 Prime Path---BFS+素数打表
题目链接: https://vjudge.net/problem/POJ-3126 题目大意: 给两个四位数a,b 每次改变a中的一位而且改动之后的必须是素数,问最少改动几次可以到b?(永远达不到b就 ...
- poj3126 筛素数+bfs
//Accepted 212 KB 16 ms //筛素数+bfs #include <cstdio> #include <cstring> #include <iost ...
- POJ3126 Prime Path
http://poj.org/problem?id=3126 题目大意:给两个数四位数m, n, m的位数各个位改变一位0 —— 9使得改变后的数为素数, 问经过多少次变化使其等于n 如: 10331 ...
- POJ3126 Prime Path(BFS)
题目链接. AC代码如下: #include <iostream> #include <cstdio> #include <cstring> #include &l ...
- poj3126(bfs)
题目链接:http://poj.org/problem?id=3126 题意:给两个四位数n,m,将n变成m需要多少步,要求每次只能改变n的某一位数,即改变后的数与改变前的数只有一位不同,且每次改变后 ...
- poj3126解题报告
题意:简单的说就是:有一个人门牌号是一个四位数的整数,并且还是一个素数,现在他想要换成另外一个四位数且是素数的门牌号,而且,每次都只能更换这个四位数的一个位置的数 ,也就是每换一次都只改变一个数字,而 ...
- poj3126 Prime Path 广搜bfs
题目: The ministers of the cabinet were quite upset by the message from the Chief of Security stating ...
- Prime Path[POJ3126] [SPFA/BFS]
描述 孤单的zydsg又一次孤单的度过了520,不过下一次不会再这样了.zydsg要做些改变,他想去和素数小姐姐约会. 所有的路口都被标号为了一个4位素数,zydsg现在的位置和素数小姐姐的家也是这样 ...
随机推荐
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验三:按键模块② — 点击与长点击
实验三:按键模块② - 点击与长点击 实验二我们学过按键功能模块的基础内容,其中我们知道按键功能模块有如下操作: l 电平变化检测: l 过滤抖动: l 产生有效按键. 实验三我们也会z执行同样的事情 ...
- Django详解之models操作
D jango 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.p ...
- C - 食物链
来源poj1182 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是 ...
- .NET Core下的Socket示例.
About.schtml中的代码 @{ ViewData["Title"] = "About"; } <h2>@ViewData["Tit ...
- .NET Core 2.2发布一览
本周终于发布了.NET Core 2.2,ASP.NET Core 2.2以及Entity Framework Core 2.2,虽然更大的新闻可能是.NET Core 3.0的特性公布,但不妨先将现 ...
- JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}
Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...
- 关于mysql远程连接
windows环境下简单,这里讲linux环境下的 首先,linux系统有一道防火墙 我用的是ubutun16.04LTS 要用ufw工具(命令)开启3306端口(ufw allow ) (如果安装的 ...
- CCPC-Wannafly Winter Camp Day4 Div1 - 咆咆咆哮 - [三分+贪心]
题目链接:https://zhixincode.com/contest/18/problem/I?problem_id=267 题目描述 输入描述 输出描述 一行一个整数表示答案. 样例输入 1 32 ...
- https://pypi.org/project/py-mysql2pgsql/
https://packages.ubuntu.com/trusty/postgresql-server-dev-9.3 所以使用下面的命令即可安装python-dev: yum install py ...
- EntityFramework_基础
什么是EF EF是一种ORM(Object-relational mapping)框架,它能把我们在编程时使用对象映射到底层的数据库结构.它可以让应用程序开发者将关系型数据作为业务模型来使用,也消除了 ...