Prime Path

POJ - 3126

题意:

给出两个四位素数 a , b。然后从a开始,每次可以改变四位中的一位数字,变成 c,c 可以接着变,直到变成b为止。要求 c 必须是素数。求变换次数的最小值。(a,b,c都是四位数字,输入时没有前导零)

分析:

  • 每次改变可以获得一个四位数c,然后如果c是素数并且之前没有出现过,那么我们把它放入队列即可。
int f[10001];
int v[10001];
void init()//素数筛
{
memset(f,0,sizeof f);
for(int i=2;i<=10000;i++)
{
if(f[i]==0)
{
for(int j = i+i;j<=10000;j+=i)
{
f[j] = 1;
}
}
}
}
int a,b;
int bfs()
{
memset(v,0,sizeof v);
queue<int> q;
q.push(a);
v[a] = 1;
int tmp;
while(!q.empty())
{
tmp = q.front();q.pop();
if(tmp==b)return v[tmp];
int now;
int t = v[tmp]+1;
for(int i=0;i<=9;i++)//循环改变的数字 0 ~ 9
{
now = tmp - tmp%10+i;//改变个位
if(now>=1000&&f[now]==0&&v[now] == 0){v[now] = t;q.push(now);}
now = tmp/100*100+i*10+tmp%10;//改变十位
if(now>=1000&&f[now]==0&&v[now] == 0){v[now] = t;q.push(now);}
now = tmp/1000*1000+i*100+tmp%100;//改变百位
if(now>=1000&&f[now]==0&&v[now] == 0){v[now] = t;q.push(now);}
now = i*1000+tmp%1000;//改变千位
if(now>=1000&&f[now]==0&&v[now] == 0){v[now] = t;q.push(now);}
}
}
}
int main()
{
init();
int T;cin>>T;
while(T--)
{
cin>>a>>b;
int ans = bfs();
cout<<ans-1<<endl;
}
return 0;
}

POJ - 3126 - Prime Path(BFS)的更多相关文章

  1. POJ 3126 Prime Path(BFS算法)

    思路:宽度优先搜索(BFS算法) #include<iostream> #include<stdio.h> #include<cmath> #include< ...

  2. POJ 3126 Prime Path (bfs+欧拉线性素数筛)

    Description The ministers of the cabinet were quite upset by the message from the Chief of Security ...

  3. POJ 3126 Prime Path (BFS)

    [题目链接]click here~~ [题目大意]给你n,m各自是素数,求由n到m变化的步骤数,规定每一步仅仅能改变个十百千一位的数,且变化得到的每个数也为素数 [解题思路]和poj 3278类似.b ...

  4. POJ 3126 Prime Path(素数路径)

    POJ 3126 Prime Path(素数路径) Time Limit: 1000MS    Memory Limit: 65536K Description - 题目描述 The minister ...

  5. (简单) POJ 3126 Prime Path,BFS。

    Description The ministers of the cabinet were quite upset by the message from the Chief of Security ...

  6. poj 3126 Prime Path(搜索专题)

    Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20237   Accepted: 11282 Desc ...

  7. POJ 3126 Prime Path (素数+BFS)

    题意:给两个四位素数a和b,求从a变换到b的最少次数,每次变换只能变换一个数字并且变换的过程必须也是素数. 思路:先打表求出四位长度的所有素数,然后利用BFS求解.从a状态入队,然后从个位往千位的顺序 ...

  8. poj 3126 Prime Path 【bfs】

    题目地址:http://poj.org/problem?id=3126 Input One line with a positive number: the number of test cases ...

  9. POJ 3126 Prime Path【BFS】

    <题目链接> 题目大意: 给你两个四位数,它们均为素数,以第一个四位数作为起点,每次能够变换该四位数的任意一位,变换后的四位数也必须是素数,问你是否能够通过变换使得第一个四位数变成第二个四 ...

随机推荐

  1. E20170509-hm

    slice   vt. 切成片; 切下; 划分;  n. 薄片,切片 slicing  n. 切割; 限幅,限制; inspect    v. 视察; 检查 inspector  n. 检查员; (英 ...

  2. Codeforces 2 A. Winner

    哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈....... 先让我笑完................ 就是一道撒比题啊,一开始是题目看错= =.是,但是后面还是自己不仔细错的.....不存在题目坑这种情况 ...

  3. Angular 项目开发中父子组件传参

    在项目开发中经常会遇到 组件之间传参的问题.今天总结下在使用angular的项目中父子组件传参的问题: 1.父组件向子组件传参: 然后在父组件中 然后在父组件的html中 然后就可以在子组件中使用了 ...

  4. win和mac系统Sublime Text 3配置编译c和c++

    widows安装 安装MinGW MinGW是Minimalist GNU on Windows的首字母缩写,安装后就可以使用很多的GNU工具.GNU(GNU’s Not Unix)是linux中的一 ...

  5. 纯js手动分页

    昨天让做个页面,后台提供所有数据,没有做好分页,需要前端js手动分页. 我参考了 http://www.cnblogs.com/jiechn/p/4095029.html 做了些许改动让分页效果更加完 ...

  6. MongoDB管理练习

    一.索引 1.插入10W条数据 文档内容为:{name:zs-i,age:1} 2016-06-07T14:35:57.041+0800 I CONTROL [initandlisten] > ...

  7. Java 学习列表

    这是从450家企业的招聘信息中统计而来,相对来说还是比较真实的,虽然有些公司的招聘要求万年不变,但还是可以大致反应企业的招聘要求的.

  8. ios学习笔记 UITableView(纯代码) (一)

    参考 “https://www.cnblogs.com/ai-developers/p/4557487.html” UITableViewCell 有一个代码重用 减少资源的浪费 参考  https: ...

  9. AJPFX的内存管理小结

    管理范围:任何继承于 NSObject的对象原理:每一个对象都有引用计数器当使用alloc new 和 copy创建对象时引用计数器被设置为1给对象发送一条retain消息 ,引用计数器加1     ...

  10. AJPFX关于学习java遇到的问题:对算法和数据结构不熟悉

    为什么我先拿“数据结构和算法”说事捏?这玩意是写程序最最基本的东东.不管你使用 Java 还是其它的什么语言,都离不开它.而且这玩意是跨语言的,学好之后不管在哪门语言中都能用得上. 既然“数据结构和算 ...