博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ3126 Prime Path(BFS)
阅读量:5889 次
发布时间:2019-06-19

本文共 1778 字,大约阅读时间需要 5 分钟。

题意:

从一个素数变到另一个素数,要求每次只能动一位上的数字,并且要求中间值也必须是素数

要点:

简单的BFS水题,只要将每个节点的变动方向写清楚就行了。

15306522 Accepted 272K 16MS 1625B 2016-03-24 09:38:53
#include
#include
#include
#include
using namespace std;int prim[10000],vis[10000];struct node{ int x; int num;};void prim_number()//打一个素数表{ for (int i = 1000; i < 10000; i++) { prim[i] = 1; for (int j = 2; j*j <= i; j++) { if (i%j == 0) { prim[i] = 0; break; } } }}void bfs(int x,int y){ int i,val,yy; queue
que; node u,v; u.x = x; u.num = 0; vis[x] = 1; que.push(u); while (!que.empty()) { u = que.front(); que.pop(); int xx = u.x; if (xx == y) { printf("%d\n", u.num); return; } for (i = 1; i <= 9; i++)//千位 { val = xx % 1000; yy = i * 1000 + val; v.x = yy; v.num = u.num + 1; if (!vis[yy] && yy != xx&&prim[yy]) { vis[yy] = 1; que.push(v); } } for (i = 0; i <= 9; i++)//百位 { int qian = xx / 1000; val = xx % 100; yy = qian * 1000 + i * 100 + val; v.x = yy; v.num = u.num + 1; if (!vis[yy] && yy != xx&&prim[yy]) { vis[yy] = 1; que.push(v); } } for (i = 0; i <= 9; i++)//十位 { val = xx / 100; int ge = xx % 10; yy = val * 100 + i * 10 + ge; v.x = yy; v.num = u.num + 1; if (!vis[yy] && yy != xx&&prim[yy]) { vis[yy] = 1; que.push(v); } } for (i = 1; i <= 9; i += 2)//个位,不能为偶数 { val = xx / 10; yy = val * 10 + i; v.x = yy; v.num = u.num + 1; if (!vis[yy] && yy != xx&&prim[yy]) { vis[yy] = 1; que.push(v); } } } printf("Impossible\n");}int main(){ int t,x,y; scanf("%d", &t); prim_number(); while (t--) { memset(vis, 0, sizeof(vis)); scanf("%d%d", &x, &y); bfs(x, y); } return 0;}

转载于:https://www.cnblogs.com/seasonal/p/10343813.html

你可能感兴趣的文章
lintcode 单词接龙II
查看>>
Material Design学习之 ProgreesBar
查看>>
WEB版一次选择多个文件进行批量上传(WebUploader)的解决方案
查看>>
Redis之 命令行 操作
查看>>
Jvm(46),指令集----对象创建与访问指令
查看>>
如何直接强制客户端刷新.js文件
查看>>
【C#】窗体动画效果
查看>>
过滤器
查看>>
EL 表达式小结
查看>>
内部排序
查看>>
OEM java.lang.Exception null
查看>>
jQuery EasyUI API 中文文档 - 组合(Combo)
查看>>
10个关于 Dropbox 的另类功用(知乎问答精编)[还是转来了]
查看>>
Oracle体系结构
查看>>
用Modelsim仿真QII FFT IP核的时候出现的Error: Illegal target for defparam
查看>>
javascript Error对象详解
查看>>
orm Lite的使用
查看>>
项目经理的职责(转载)
查看>>
安装rabbitmq
查看>>
Excel中 设置使得每行的颜色不一样
查看>>