演算法Tips雜亂整理

2021-07-27 05:48:52 字數 1227 閱讀 3216

1.埃氏篩

① 給定乙個正整數n(n<=10^6),問n以內有多少個素數?

做法:做法其實很簡單,首先將2到n範圍內的整數寫下來,其中2是最小的素數。將表中所有的2的倍數劃去,表中剩下的最小的數字就是3,他不能被更小的數整除,所以3是素數。再將表中所有的3的倍數劃去……以此類推,如果表中剩餘的最小的數是m,那麼m就是素數。然後將表中所有m的倍數劃去,像這樣反覆操作,就能依次列舉n以內的素數,這樣的時間複雜度是o(nloglogn)。

② 區間素數篩:給定兩個正整數a、b(a

2.歐幾里得(輾轉相除法)—-最小公約數

注:最大公倍數求法,先求最小公約數rem, 最大公倍數= a/rem * b/rem * rem ;

3. 計算int x的二進位制包含幾個1

int func(x)

return count;

}

4.佇列迴圈佇列當 rear=front時,為空, 當還剩下乙個空間的時候,表示佇列滿了

迴圈佇列滿的條件: (rear+1)%queuesize == front

迴圈佇列的長度: (rear – front + queuesize) %queuesize

5.kmp模式匹配演算法

kmp模式匹配演算法的目的在於減少不必要的匹配次數,從而提高匹配效率。kmp的核心在於next陣列的推導,而next陣列完全有模式串決定。

next陣列意義:表示若在改位j匹配失敗,則將j=next[j]進行繼續匹配,從而減少不必要的匹配。

j=next[j];//回溯j}}

kmp改進:

考慮如下情況:

j123456789

模式串t

aaaaaaaab

next[j]

012345678

nextval[j]

000000008

演算法筆記tips

無窮大使用 0x3f3f3f3f 無窮小使用 0xcfcfcfcf 0x3f3f3f3f的精妙之處的解釋 鏈結 陣列多開一點 多開10,20 之類的 gets char x 函式用cin.getline char x int max 來代替 所有的浮點型別都使用double 除了 c之外,scanf...

一些雜亂的知識點(未整理)

一.重寫onbackpressed 函式的時候 1.如果你要自己寫finish 那可以去除super.onbackpressed 2.如果只是寫其他 把 放在super.onbackpressed 前面。因為如果super是預設處理方法 如果沒有這句話,返回鍵無效,如果放前面了就只有執行返回功能,而...

安全雜亂筆記整理1 常用服務埠總結

不管作為網路工程師還是安全從業者,其實都應該知道常用服務的埠及協議情況,這裡進行簡單的整理。描述 通常情況下,ftp會占用 20 和 21 埠。21埠用於連線,20埠用於資料傳輸 埠 20,21 協議 tcp 埠十六進製制 20埠 14 21 埠 15 描述 ssh為secure shell的縮寫,...