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

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

算法Tips雜亂整理

2019-11-08 01:44:12
字體:
來源:轉載
供稿:網友

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){ int count=0; while(x){ count++; x= x&(x-1); } return count;}

4.隊列

循環隊列當 rear=front時,為空, 當還剩下一個空間的時候,表示隊列滿了 循環隊列滿的條件: (rear+1)%QueueSize == front 循環隊列的長度: (rear – front + QueueSize) %QueueSize

5.KMP模式匹配算法

KMP模式匹配算法的目的在于減少不必要的匹配次數,從而提高匹配效率。KMP的核心在于next數組的推導,而next數組完全有模式串決定。 next數組意義:表示若在改位j匹配失敗,則將j=next[j]進行繼續匹配,從而減少不必要的匹配。 這里寫圖片描述

void get_next(char T[],int next[]){ int i=1,j=0; next[i]=0; while(i<T[0]){ if(j==0 || T[i]==T[j]){ ++i; ++j; next[i]=j;//這里可以改進 } else j=next[j];//回溯j }}

KMP改進: 考慮如下情況:

j 123456789
模式串T aaaaaaaab
next[j] 012345678
nextval[j] 000000008

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沂水县| 德兴市| 达拉特旗| 北川| 昌都县| 团风县| 达尔| 南漳县| 嘉义县| 伊春市| 宁德市| 宣恩县| 洪湖市| 辽中县| 天全县| 天等县| 潜江市| 达尔| 蒙阴县| 大港区| 望谟县| 体育| 新绛县| 遂昌县| 新昌县| 龙州县| 涪陵区| 徐水县| 绥德县| 改则县| 临洮县| 中宁县| 察雅县| 宜昌市| 滦南县| 万州区| 千阳县| 琼结县| 阳西县| 蕲春县| 张家港市|