POJ 3126 (BFS)
来源:互联网 发布:淘宝签到领金币在哪里 编辑:程序博客网 时间:2024/05/16 12:14
题目链接:http://poj.org/problem?id=3126
题意:
给出两个素数,判断能否将第一个素数转换为第二个素数。转换需遵循以下规则:每次只能改变一位数,且改变之后该数为素数,不允许出现前导0的情况。
思路:题目比较水..细心一点,按照要求慢慢拍代码就好。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>using namespace std;const int INF=0x3f3f3f3f;const int maxn=10010;int T,n,m;int prime[maxn];bool vis[maxn];void work(){//素数打表memset(prime,0,sizeof(prime));prime[1]=1;for(int i=2;i<maxn;i++){if(!prime[i]){for(int j=i;i*j<maxn;j++){prime[i*j]=1;}}}}struct node{int num;int step;};int getNum(int *a){//数组转换成整数int ans=0;for(int i=0;i<4;i++){ans=ans*10+a[3-i];}return ans;}bool Bfs(){queue<node>q;node s,e;s.num=n,s.step=0;vis[s.num]=1;q.push(s);while(!q.empty()){s=q.front();q.pop();if(s.num==m){printf("%d\n",s.step);return true;}int a[4],temp[4];int nowNum=s.num,cnt=0;while(nowNum){a[cnt]=nowNum%10;nowNum/=10;cnt++;}for(int i=0;i<4;i++){for(int j=0;j<4;j++)temp[j]=a[j];for(int j=0;j<10;j++){temp[i]=j;e.num=getNum(temp);e.step=s.step+1;if(!vis[e.num]&&!prime[e.num]&&e.num>=1000){//注意判断前导0的情况vis[e.num]=1;q.push(e);}}}}return false;}int main(){#ifndef ONLINE_JUDGEfreopen("test.in","r",stdin);freopen("test.out","w",stdout);#endifwork();scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);memset(vis,0,sizeof(vis));bool flag=Bfs();if(!flag) puts("Impossible");}return 0;}
0 0
- POJ 3126 (BFS)
- poj poj 3126 Prime Path(BFS)
- POJ 3126 Prime Path 解题报告(BFS & 双向BFS)
- poj 3126 Prime Path(bfs搜索)
- POJ 3126 Prime Path (BFS)
- poj 3126 Prime Path(BFS)
- poj 3126 Prime Path (bfs)
- POJ 3126 Prime Path(BFS算法)
- Prime Path (poj 3126 bfs)
- POJ 3126 Prime Path(BFS)
- POJ 3126 - Prime Path(BFS)
- poj 3126 Prime Path(BFS)
- POJ 3126 Prime Path(BFS)
- POJ 3126 Prime Path (bfs、埃氏筛法)
- POJ 3126 Prime Path (BFS)
- POJ 3126 Prime Path(bfs)
- POJ 3126 Prime Path (BFS)
- POJ 3126 Prime Path (BFS)
- NYOJ 1875
- FragmentStatePagerAdapter与FragmentPagerAdapter的区别
- Django模型操作
- JavaScript中的对象(一)——对象的创建
- PC端扫码实现微信联合登录
- POJ 3126 (BFS)
- 实践中学习vim之按键序列映射
- poj1062 昂贵的聘礼 (最短路)
- android.mk编写要点
- 使用NumberFormat,格式化输出
- sublime text 3
- NYOJ--1100--WAJUEJI which home strong!
- JavaScript Web云平台OS.js介绍
- 关于SSH整合的问题