编程珠玑及续笔记
来源:互联网 发布:未来网络发展论文 编辑:程序博客网 时间:2024/06/06 01:00
编程珠玑
15.2 最长重复子串
#include<iostream>#include<algorithm>using namespace std; const int MAXN=5000000;char c[MAXN],*a[MAXN];int comlen(char *p,char *q){ int i=0; while(*p&&(*p++==*q++))++i; return i;}int pstrcmp(const void *a,const void *b){ return strcmp(*(char **)a,*(char**)b);} int main(){ char ch; int n=0,maxlen=0,maxi=0; while(cin>>ch) { a[n]=&c[n]; c[n++]=ch; } c[n]='\0'; qsort(a,n,sizeof(char *),pstrcmp); for(int i=0;i<n-1;++i) { if(comlen(a[i],a[i+1])>maxlen) { maxlen=comlen(a[i],a[i+1]); maxi=i; } } cout<<maxlen<<' '<<a[maxi]<<endl; return 0;}
qsort函数的用法:http://www.cnblogs.com/syxchina/archive/2010/07/29/2197382.html
- 取样问题
蓄水池抽样
先把1到k放入数组,从i=k+1开始,以k/i的概率选择i,若i被选中,则随机替换数组中的一个数。最终每个数被选中的概率均为k/n。
证:p=ki×[(i+1−ki+1+ki+1×k−1k)×⋯×(n−kn+kn×k−1k)]=ki×(ii+1×⋯×n−1n)=kn
vector<int> f(vector<int> vec,int k){ srand((unsigned)time(0)); vector<int> result; for(int i=0;i<k;++i)result.push_back(vec[i]); for(int i=k;i<vec.size();++i) { int j=rand()%(i+1); if(j<k)result[j]=vec[i]; } return result;}
概率随机问题【1】【2】【3】:http://blog.csdn.net/hxz_qlh/article/details/12843131
编程珠玑(续)
第1章(性能监视工具)
//程序P5bool prime(int n){ if(n%2==0)return n==2; else if(n%3==0)return n==3; else if(n%5==0)return n==5; for(int i=7;i*i<=n;i+=2) { if(n%i==0)return false; } return true;}//程序P6#include<iostream>#include<vector>using namespace std;bool prime(int n,vector<int> &x){ for(int i=0;x[i]*x[i]<=n;++i) { if(n%x[i]==0)return false; } x.push_back(n); return true;}int main(){ vector<int> x(1,2); cout<<2<<endl; for(int i=3;i<=1000;++i) { if(prime(i,x))cout<<i<<endl; } return 0;}
第13章(绝妙的取样)
//算法Sunordered_set<int> fun1(int M,int N){ unordered_set<int> S; for(int size=0;size<M;) { int T=rand()%N+1; if(S.find(T)==S.end()) { S.insert(T); ++size; } } return S;}//算法F1unordered_set<int> Sample(int M,int N){ if(M==0) { unordered_set<int> S; return S; } unordered_set<int> 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;}//算法F2unordered_set<int> fun2(int M,int N){ unordered_set<int> S; for(int J=N-M+1;J<=N;++J) { int T=rand()%J+1; if(S.find(T)==S.end())S.insert(T); else S.insert(J); } return S;}//算法Pvector<int> f(int N,int M){ vector<int> S; for(int J=N-M+1;J<=N;++J) { int T=rand()%J+1; vector<int>::iterator iter=find(S.begin(),S.end(),T); if(iter==S.end())S.insert(S.begin(),T); else S.insert(iter+1,J); } return S;}
0 0
- 编程珠玑及续笔记
- 《编程珠玑》笔记
- 《编程珠玑》笔记
- 编程珠玑笔记
- 编程珠玑学习笔记
- 《编程珠玑》第一章笔记
- 读《编程珠玑》笔记
- 编程珠玑笔记--排序
- 编程珠玑笔记~~开篇
- 编程珠玑 笔记
- 编程珠玑笔记第一章
- 《编程珠玑》第一章笔记
- 编程珠玑学习笔记
- 《编程珠玑》笔记一
- 《编程珠玑》看书笔记
- 《编程珠玑》 心得笔记
- 《编程珠玑》笔记
- 编程珠玑笔记1
- poj 1002
- 世界各国电视制式标准
- 腾讯面试题-珠宝砝码
- [Python]网络爬虫(四):Opener与Handler
- Method Swizzling 和 AOP 实践
- 编程珠玑及续笔记
- CSS基线之道
- 词根 -pose-,-posit- 表示“放置,站在那里,停在那里”
- Bitmap
- IO流第六课,字节流、节点流、文件的拷贝
- 一些小问题,总是忘,每次遇到还得查,记到这里方便以后查询
- angular 数据建模
- 只有程序员了解的9个真相
- ios开发资源汇总