poj 3126 bfs 素數判定

2021-06-29 04:13:34 字數 961 閱讀 5717

鏈結

背景:一直wa 感覺完全不知道錯在**,覺得自己的bfs寫的沒有錯誤。。。然後就開始急躁。。去搜了題解。。下次一定要克服這樣的心理,要靜下心來好好檢查每一行**,不然就會跟上次周賽一樣越來越緊張。。要努力去克服!!!!不要總有著想要趕快過題的想法。。。切勿急躁。。

好了。。回到這題。。wa不在bfs而在素數的判定上,,i*i<=t  沒有寫等號·····   也是自己的知識掌握的不夠牢靠。。。

想了一下wa的時候應該先檢查邏輯方面或者演算法有沒有什麼問題,如果沒有的話就要考慮是否有一些的小問題比如邊界條件是小於還是小於等於。。。這些都是要考慮的地方。。平常錯誤時要先自行排錯,檢查乙個小時,如果實在找不出來的話,乾脆先放一放,不要急著去找題解,把題號記下來,過一兩天在回來看看能不能找出來,還是不行的話再去參考題解。。

思路主要就是bfs替換各個位置的數字,檢查約束條件(是否是素數是否訪問過),然後利用bfs就可以找出最小的步數。。

**:

//poj 3126

#include#include#includeusing namespace std;

int x,y;

int ok;

int visit[10000];

struct digit

cur,next1;

bool is_prime(int t)

return true;

}void bfs(digit temp)

for(int i = 1;i <= 9;i++) //替換千位

}for(int i = 0;i <= 9;i++) //替換百位

} for(int i = 0;i <= 9;i++) //替換十位

}for(int i = 0;i <= 9;i++) //個位

}q.pop(); }}

int main ()

return 0;

}

POJ3126 素數路徑(BFS)

每日打卡 1 1 題目大意 輸入乙個素數,變換到另乙個素數,但期間一次只能改變乙個數字,並且改變量字後的數依然是素數。題解 主體是bfs,先用尤拉篩法把素數表打出來,然後依次修改每一位數,判斷修改後的數是否為素數。include include include include include inc...

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 也是乙個素數。你將不得不在你辦公室...