poj 3126 Prime Path(BFS)
来源:互联网 发布:淘宝退款不退货规则 编辑:程序博客网 时间:2024/05/16 09:28
Debug了一个早上,感觉自己BFS写得没错。。。最后发现原来是打表的时候漏了一个大括号。T T。不过练习了一下Codeblock工程中的Debug模式~,成功发现了问题。
题意是让转化俩素数 j->k,一次只能换一个数位的数,并且转换过程中新的那个数还要是素数,求最少的次数。
素数直接打表。
附上学校某学长新生赛题解给的两种素数打表代码:
1、 prime[i] 非0 表示是素数
void GetPrime(int n) { for (int i = 0;i < n;i ++) prime[i] = i; prime[1] = 0; for (int i = 2;i < n/2;i ++) for (int j = i;j < n/2;j ++) if (i * j > n) break; else prime[i*j] = 0; }
2、 prime[i] == 1 为素数 跟第一种差不多
void GetPrime(int n) { memset (prime,1,sizeof(prime)); for (int i = 2; i <= n; i ++) for (int j = i*2; j <= n; j += i) prime[j] = 0; }3、自己模仿的素数打表:
prime[i] == 1 为素数
void Prime(int n){ memset(prime,1,sizeof(prime)); for(int i=2; i < n; i++) for(int j=2; j < n; j++) { if(i*j > n) break; prime[i*j]=0; }}
代码:
#include<stdio.h>#include<string.h>#include<queue>using namespace std;const int MAX=10001;bool flag;bool vis[MAX];bool prime[MAX];void Prime(){ int i,j; for(i=1000; i<=MAX; i++) { for(j=2; j<i; j++) if(i%j==0) { prime[i]=0; break; } if(j==i) prime[i]=1; }}int bfs(int s,int e){ queue<int> Q; int now,next; int num[5]; int i, j, tmp; int step[MAX]= {0}; vis[s]=1; Q.push(s); while(!Q.empty()) { now=Q.front(); Q.pop(); if(now==e) { flag=1; return step[now]; } num[1]=now%10; num[2]=now/10%10; num[3]=now/100%10; num[4]=now/1000; for(i=1; i<=4; i++) { tmp=num[i]; for(j=0; j<=9; j++) { if(j!=tmp) { num[i]=j; next=num[1]+num[2]*10+num[3]*100+num[4]*1000; if(!vis[next] && prime[next]) { step[next]=step[now]+1; vis[next]=1; Q.push(next); } if(next==e) { flag=1; return step[next]; } } num[i]=tmp; } } }}int main(){ int n, j, k, ans; scanf("%d", &n); Prime(); while(n--) { scanf("%d%d", &j, &k); flag=0; memset(vis,0,sizeof(vis)); ans=bfs(j,k); if(flag) printf("%d\n",ans); else printf("Impossible\n"); } return 0;}
0 0
- poj 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算法)
- 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)
- POJ 3126 Prime Path (BFS)
- POJ 3126 Prime Path(BFS)
- 深入理解C语言-----副作用(Side Effect)和顺序点(Sequence Point)
- k-means算法
- 辗转相除法
- 智能家居云平台,准备好突出重围了吗?——第15期中国智能家居主题沙龙顺利在京召开
- 学完java基础的感受
- poj 3126 Prime Path(BFS)
- fork, vfork, clone,pthread_create,kernel_thread
- JAVA SE 总结
- Solr Hello word
- java环境配置
- 创建顺序表并进行一系列操作
- 文件相关知识
- 网页计算器
- 三星i9308刷机笔记