程式設計珠璣及續筆記

2021-06-29 11:03:36 字數 1762 閱讀 4633

程式設計珠璣

15.2 最長重複子串

#include

#include

using

namespace

std;

const

int maxn=5000000;

char c[maxn],*a[maxn];

int comlen(char *p,char *q)

int pstrcmp(const

void *a,const

void *b)

int main()

c[n]='\0';

qsort(a,n,sizeof(char *),pstrcmp);

for(int i=0;i1;++i)

}cout

<' '

0;}

qsort函式的用法:

12 取樣問題

蓄水池抽樣

先把1到k放入陣列,從i=k+1開始,以k/i的概率選擇i,若i被選擇,則隨機替換陣列中的乙個數。最終每個數被選中的概率均為k/n。

證: i被選中的概率 = 選擇i的概率 * (i後面元素不被選擇的概率 + i後面元素被選擇的概率 * 不替換i的概率) p=

ki×[

(i+1

−ki+

1+ki

+1×k

−1k)

×⋯×(

n−kn

+kn×

k−1k

)]=k

i×(i

i+1×

⋯×n−

1n)=

kn

vector

f(vector

vec,int k)

概率隨機問題:

程式設計珠璣(續)

第1章(效能監視工具)

//程式p5

bool prime(int n)

return

true;

}//程式p6

#include

#include

using

namespace

std;

bool prime(int n,vector

&x)

x.push_back(n);

return

true;

}int main()

第13章(絕妙的取樣)

//演算法s

unordered_set

fun1(int m,int n)

}return s;

}//演算法f1

unordered_set

sample(int m,int n)

unordered_set

s=sample(m-1,n-1);

int t=rand()%n+1;

if(s.find(t)==s.end())s.insert(t);

else s.insert(n);

return s;

}//演算法f2

unordered_set

fun2(int m,int n)

return s;

}//演算法p

vector

f(int n,int m)

return s;

}

《程式設計珠璣》看書筆記

臨睡前翻看了下 程式設計珠璣 續 這本書,看到第一章就被吸引了,效能監視工具這節從計算素數入手。題目是 列印所有小於1000的素數 簡單直白的方法就是,針對每個小於1000的數字n,從2開始到n 1,如果能被任意乙個數整除,那它就不是素數。如下 int prime int n return 1 in...

程式設計珠璣筆記1

乙個檔案裡有1千萬 10000000 個7位的整數 小於1千萬 給大約1m記憶體讓排序 向量旋轉 abcdefgh 長度n為8 向左旋轉i 3次 某檔案包含40億個隨機次序32位整數,其中有乙個整數未出現,找出來。限制 記憶體幾百位元組,若干順序檔案。乙個詞典有230000個單詞,file和life...

讀《程式設計珠璣》筆記

程式設計珠璣 是一本很好的,經典的程式設計書。這兩天開始讀,有種 相見恨晚 的感覺。書中通過講述作者自己的親身體會來說明程式設計的藝術。很有感染力。第一章講述了乙個 號碼排序的故事。強調化蘩為簡的重要性。很多問題,咋一看挺難的,如果仔細分析轉化,可能會發現其實很簡單。第二章二分搜尋和排序在實際問題處...