国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巢湖市| 呈贡县| 丰顺县| 清流县| 浦江县| 平阳县| 灵丘县| 沅江市| 扎赉特旗| 八宿县| 桐柏县| 安陆市| 潮安县| 株洲市| 遵义市| 遵义县| 明水县| 花莲县| 彰武县| 陵水| 廉江市| 兴城市| 河池市| 土默特左旗| 延安市| 黑山县| 郓城县| 三亚市| 大冶市| 安龙县| 于田县| 兰州市| 甘谷县| 和平县| 同江市| 峨山| 灵璧县| 白山市| 望江县| 大足县| 疏附县|