POJ3126 素數路徑(BFS)

2021-08-15 19:58:44 字數 484 閱讀 5068

每日打卡(1/1)

題目大意:輸入乙個素數,變換到另乙個素數,但期間一次只能改變乙個數字,並且改變量字後的數依然是素數。

題解:主體是bfs,先用尤拉篩法把素數表打出來,然後依次修改每一位數,判斷修改後的數是否為素數。

#include#include#include#include#include#includeconst int maxn = 10473;

using namespace std;

struct node;

bool vis[maxn*10];

int prime[maxn],s,b,pos[maxn];

long long ans = 0;

void is_prime(int n)

for(int j=0;i*prime[j]<=n;j++)

}} int bfs()

return 0;

}

POJ3126素數路徑

注意素數的判斷演算法不要馬虎寫錯 bfs,ac 如下 include includeusing namespace std int vis 10000 判斷節點是否入隊過 struct node link 10000 int cal 4 int loc 4 10 判斷某乙個數字能否重新被使用,0表示...

poj 3126 容器 素數篩法

主要路徑 時間限制 1000ms 記憶體限制 65536 k 共提交 22998 接受 12745 描述 它是乙個不時改變這樣的事情,為了不讓敵人在黑暗中的安全問題。但你看,我選擇了我的號碼 1033年很好的理由。我是總理,你知道 我知道,所以你的新號碼 8179 也是乙個素數。你將不得不在你辦公室...

poj3126 埃式篩法 bfs

題意 求素數a變換到素數b的最小步數,每次只能更改一位,且更改後的數也是素數。每次輸入的兩個素數都是4位數。解法一 利用埃式篩法打表,用陣列記錄素數,把所有素數放在乙個陣列中,然後在這個陣列的基礎上進行bfs。解法二 打表記錄每個數的素數性質,然後將a的每一位依次改變,進行bfs,前面的打表在bfs...