国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

poj 3126 Prime Path(bfs)

2019-11-08 02:52:10
字體:
來源:轉載
供稿:網友

題意:給兩個四位素數,從第一個素數變換到第二個素數最少需要變換多少次,每次只變換一個位置上的數字,第一位數字不能為0

簡單bfs

#include <cstdio>#include <cstring>#include <queue>using std::queue;struct node{ int val; int step;};bool PRime[10000];bool book[10000];int s,e,res;int num[4];void getPrime(){ memset(prime,0,sizeof(prime)); prime[0] = prime[1] = true; for(int i = 2; i < 10000; ++i) { if(!prime[i]) for(int j = 2*i; j < 10000; j += i) prime[j] = true;//false表示是素數,true表示不是素數 }}bool isPrime(int num){ return !prime[num];}void BFS(){ memset(book,0,sizeof(book)); queue<node> que; node head; head.val = s; head.step = 0; book[s] = true; que.push(head); int temp; while(!que.empty()) { node cur = que.front(); que.pop(); if(cur.val == e) { res = cur.step; return; } num[0] = cur.val/1000; num[1] = (cur.val/100)%10; num[2] = (cur.val/10)%10; num[3] = cur.val%10; for(int i = 0; i < 4; ++i) { temp = num[i]; for(int j = 0; j < 10; ++j) { if(i == 0 && j == 0) continue; if(temp != j) { num[i] = j; int n = num[0]*1000+num[1]*100+num[2]*10+num[3]; if(!book[n] && isPrime(n)) { node atp; atp.val = n; atp.step = cur.step + 1; book[n] = true; que.push(atp); } } } num[i] = temp; } }}int main(){ int t; getPrime(); scanf("%d",&t); while(t--) { res = -1; scanf("%d %d",&s,&e); BFS(); if(res == -1) printf("Impossible/n"); else printf("%d/n",res); } return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 莱芜市| 株洲县| 凤山市| 柯坪县| 勃利县| 昌黎县| 西丰县| 黄梅县| 磴口县| 荣成市| 新余市| 修文县| 光泽县| 南溪县| 河源市| 林周县| 仪陇县| 牙克石市| 女性| 江门市| 台南县| 蒙城县| 南投县| 淮南市| 广宁县| 斗六市| 凤翔县| 乌苏市| 辽宁省| 高平市| 镶黄旗| 噶尔县| 庆云县| 邹平县| 特克斯县| 报价| 汤原县| 泰安市| 民乐县| 兰溪市| 福建省|