算法
文章平均质量分 59
搏风雨
倘若不坚强,懦弱给谁看。
展开
-
KMP算法详解
KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。但是相较于其他模式匹配算法,该算法晦涩难懂,第一次接触该算法的读者往往会看得一头雾水,主要原因是KMP算法在构造跳转表next过程中进行了多个层面的优化和抽象,使得KMP算法进行模式匹配的原理显得不那么直白。本文希望能够转载 2014-07-24 09:33:59 · 446 阅读 · 0 评论 -
BM算法详解
1977年,Robert S.Boyer和J Strother Moore提出了另一种在O(n)时间复杂度内,完成字符串匹配的算法,其在绝大多数场合的性能表现,比KMP算法还要出色,下面我们就来详细了解一下这一出色的单模式匹配算法,在此之前推荐读者读一下我的另一篇文章《KMP算法详解》,对于透彻理解BM算法大有裨益。 在讲解Boyer-Moore算法之前,我们还是要提一提KMP算法的老例子,转载 2014-07-24 09:34:53 · 532 阅读 · 0 评论 -
求next数组代码
#include using namespace std; int main() { int i,j; int next[10]; char t[100]; for(i=1;i<=8;i++) cin>>t[i]; i=1; next[1]=0; j=0; while(i<=8) { if(j==0 ||t[i]==t[j]) { i++; j+原创 2014-07-29 17:42:18 · 1284 阅读 · 0 评论 -
并查集
int get_par(int u){ if(par[a]!=a) par[a]=get_par(par[a]); return par[a]; } void merge(int a,int b){ par[get_par(a)]=get_par(b); }原创 2014-07-30 11:43:14 · 462 阅读 · 0 评论 -
kmp算法代码
#include #include #include using namespace std; const int maxsize=100; void getnext(string t,int next[]) { int j,k; j=0; k=-1; next[0]=-1; while(j { if(k==-1 ||t[j]==t[k]) { j++;k++; nex原创 2014-07-30 10:41:55 · 547 阅读 · 0 评论 -
背包九讲
背包九讲 目录(?)[+] 【转】背包九讲-dd_engi-第一部分 (2012-03-24 23:26:49) 转载▼ 标签: 背包 动态规划 空间复杂度 物品 杂谈 分类: mass 转载:dd_engi 的背包九讲 目录 第一讲 01转载 2014-09-25 20:34:32 · 637 阅读 · 0 评论 -
字典树
代码: #include using namespace std; #define MAX 26 struct Trie { Trie *next[MAX]; int v; //根据需要变化 }; Trie *root=new Trie; char str[20]; void createTrie(char *str){ int len原创 2014-10-13 21:23:13 · 444 阅读 · 0 评论 -
匈牙利算法
模板:原创 2014-11-08 10:47:45 · 498 阅读 · 0 评论