![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
L-在路上
海蓝之心径在路上寻着的那本心
展开
-
算法入门之Trie树
字典树入门: Trie树(前缀树)又称字典树,通过树形结构来构造各个字符串,通过数字式,形成一个体系, root根节点,连接各个子节点,并附加字符信息,从而,达到快速查询手段,来了解想要的信息。 以此为模:http://acm.hdu.edu.cn/showproblem.php?pid=1251 Trie算法技巧: 1.构造树形,初始化。信息包含:每段字符统计个数ncount,树结原创 2013-08-25 10:26:27 · 704 阅读 · 0 评论 -
算法入门之KMP
KMP入门: KMP算法是一种改进的字符串匹配算法,是D.E.Knuth与V.R.Pratt和J.H.Morris同时发现的算法。 比一般算法添加一个next[]数组。 next[]数组函数,通过子串自身匹配,找到指针的回溯,而主串不回溯的原理。使时间复杂度变为线性 查找。O(n+m); next[j]的表达式为:1.next[j]=0;2.next[j]=-1;3.next[j]=ma原创 2013-08-25 15:48:14 · 733 阅读 · 0 评论 -
算法入门之AC自动机
AC自动机入门: Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。 AC自动机,通过Trie树字符的建立的方式,再类似KMP的算法的过程,实现快速查找文本出现的字符串;并进行统计。 算法一般分成:1.初始化树型结构。2.类似Trie树建树。3.特殊:建失败函数。4.类似KMP查询。 以此为模:http://acm.hdu.edu原创 2013-08-27 16:31:50 · 722 阅读 · 0 评论 -
最小生成树之普里姆
普里姆算法思想: 1.有二维数组[][]. 2.定一点到其他点的权值Low[]。 3.找到该点到其他点的权值的最小值; 4.到前r[v]--新v值是标志当前点到某点的标号。 #define Max 7000 int n,m; int e[Max][Max]; int low[Max]; int r[Max]; int prim() { int i,j; int sumweig原创 2013-10-24 13:46:18 · 584 阅读 · 0 评论 -
最小生成树之克鲁斯卡尔算法
克鲁斯卡尔算法思想: 1.有个Struct定义边的信息. 2.通过并查集和排序找得到最小权值(函数:1.UFset,2.Find,3.Union。) 3.找到权值的最小值的父亲关系相同放弃,否拿下Kruskal; 4.一直把所有的点合成通过连通分量。 #define Max 2000000 #define Maxn 2000 struct edge { int u,v; int原创 2013-10-25 13:51:42 · 646 阅读 · 0 评论 -
算法入门之BFS
BFS算法的思想: 最佳策略。 struct node { int x; int step; } bool vis[max]; inline int dir(int x,int i) { switch(i) { case 0:return 2*x; case 1:return x+1; case 2:return x-1; } } inline int Judge(int原创 2013-10-31 13:45:48 · 588 阅读 · 0 评论 -
算法入门之DFS
DFS的算法思想: 暴力搜索,找到目标。 int dir[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}}; int p,q,flag; int vis[max][max]; int path[max][2]; int Judge(int X,int Y) { if(X>=1&&X=1&&Y<=p) re原创 2013-10-31 13:21:29 · 655 阅读 · 0 评论