POJ 3126 Prime Path(BFS)
2012-07-15 19:55
465 查看
题目链接
单步调试。。。各种调,1Y。
单步调试。。。各种调,1Y。
#include <stdio.h> #include <string.h> #include <math.h> int prim[10000],o[10000]; int p[100000]; int main() { int i,j,k,n,m,z,t,start,end,num; int c1,c2,c3,c4; for(i = 1001;i <= 9999;i ++) { z = 1; for(j = 2;j <= sqrt(i);j ++) { if(i%j == 0) { z = 0; break; } } if(z) prim[i] = 1; } /* for(i = 1001;i<= 9999;i ++) if(prim[i]) printf("%d ",i);*/ scanf("%d",&t); while(t--) { num = 0;z = 0; memset(o,0,sizeof(o)); scanf("%d%d",&n,&m); start = end = 1; p[1] = n;o = 1; while(start <= end) { j = 1; if(o[m]) { z = 1; break; } for(i = start;i <= end;i ++) { c1 = p[i] % 1000; c2 = p[i]-c1/100*100; c4 = p[i] - (p[i] % 10); c3 = p[i]/100*100 + (p[i]%10); for(k = 1;k <= 9;k ++) { if(prim[c1+k*1000]&&!o[c1+k*1000]) { o[c1+k*1000] = 1; p[end+j] = c1+k*1000; j ++; } } for(k = 0;k <= 9;k ++) { if(prim[c2+k*100]&&!o[c2+k*100]) { o[c2+k*100] = 1; p[end+j] = c2+k*100; j ++; } } for(k = 0;k <= 9;k ++) { if(prim[c3+k*10]&&!o[c3+k*10]) { o[c3+k*10] = 1; p[end+j] = c3+k*10; j ++; } } for(k = 0;k <= 9;k ++) { if(prim[c4+k]&&!o[c4+k]) { o[c4+k] = 1; p[end+j] = c4+k; j ++; } } } start = end +1; end = end + j -1; num ++; } if(z) printf("%d\n",num); else printf("Impossible\n"); } return 0; }
相关文章推荐
- POJ 3126 Prime Path(BFS)
- POJ 3126 Prime Path(素数判断+bfs)
- 简单BFS POJ 3126 Prime Path
- poj_3126 Prime Path(bfs)
- POJ 3126 Prime Path 解题报告(BFS & 双向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求最短路
- Prime Path (bfs)POJ - 3126
- POJ 3126 Prime Path 第一道BFS 循环队列,AC的很辛苦!
- 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】