POJ 3126 Prime Path(kuangbin带你飞 专题一:简单搜索)
2015-01-25 15:16
435 查看
刚开始以为要输出变换路径...惆怅好久,后来发现并不需要,然后果断AC。
标记数组先把非素数的都标记为用过...然后进行bfs,删除某一位的数字然后填0-9...
标记数组先把非素数的都标记为用过...然后进行bfs,删除某一位的数字然后填0-9...
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<queue> #include<algorithm> #include<ctype.h> #include<iostream> using namespace std; int used[20000],n,k,mini; int ok(int x) { if(x<1000||x>10000) return 0; if(used[x]) return 0; return 1; } struct node { int x,t; }; int bfs() { queue<node> q; node now,next; memset(used,0,sizeof(used)); used[0]=used[1]=1; for(int i=2;i<=10000;i++) { if(used[i]==1) continue; for(int j=i+i;j<=10000;j+=i) used[j]=1; } now.x=n,now.t=0; used =1; q.push(now); while(!q.empty()) { now=q.front(); q.pop(); if(now.x==k) return now.t; for(int i=0;i<=9;i++) { next.x=now.x%1000+i*1000; if(ok(next.x)) { used[next.x]=1; next.t=now.t+1; q.push(next); } next.x=now.x%100+now.x/1000*1000+100*i; if(ok(next.x)) { used[next.x]=1; next.t=now.t+1; q.push(next); } next.x=now.x%10+i*10+now.x/100*100; if(ok(next.x)) { used[next.x]=1; next.t=now.t+1; q.push(next); } next.x=now.x/10*10+i; if(ok(next.x)) { used[next.x]=1; next.t=now.t+1; q.push(next); } } } return -1; } int main() { int T; cin>>T; while(T--) { int ans; cin>>n>>k; ans=bfs(); cout<<ans<<endl; } return 0; }
相关文章推荐
- [kuangbin带你飞]专题一 简单搜索F - Prime Path(POJ 3126)
- [kuangbin带你飞]专题1 简单搜索 F - Prime Path POJ - 3126
- [kuangbin带你飞]专题一 简单搜索 - F - Prime Path
- poj 3126 Prime Path([kuangbin带你飞]专题一 简单搜索)
- [kuangbin带你飞]专题一 简单搜索 Prime Path :BFS
- [kuangbin带你飞]专题一 简单搜索-F - Prime Path
- [kuangbin带你飞]专题一 简单搜索 F - Prime Path poj 3126
- [kuangbin带你飞]专题一 简单搜索 A - 棋盘问题(POJ 1321)
- POJ - 1321 棋盘问题 [kuangbin带你飞]专题一 简单搜索
- [kuangbin带你飞]专题一 简单搜索 H - Pots poj 3414
- [kuangbin带你飞]专题一 简单搜索C - Catch That Cow(POJ 3278)
- [kuangbin带你飞]专题一 简单搜索 K - 迷宫问题 POJ 3984
- poj 3126 Prime Path(简单的DFS搜索)
- poj 3126 Prime Path(搜索专题)
- [kuangbin带你飞]专题一 简单搜索D - Fliptile(POJ 3279)
- POJ 3984 迷宫问题(kuangbin带你飞 专题一:简单搜索)
- POJ - 3984 迷宫问题 [kuangbin带你飞]专题一 简单搜索
- [kuangbin带你飞]专题一 简单搜索 E - Find The Multiple poj 1426
- POJ 3126-Prime Path 简单搜索 BFS
- [kuangbin带你飞]专题一 简单搜索E - Find The Multiple(POJ 1426)