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