算法模板
qq_41698081
这个作者很懒,什么都没留下…
展开
-
ac自动机算法模板
1.多模式串匹配2 .在模式串she ,he,h 和文本串 shesheshe进行匹配 在两个匹配的模式串中找到的最长的后缀,因为在字典树中 eg:先匹配s 1.然后匹配了sh,在文本串中sh已经匹配过了,而sh在字典树中只会有一条路径,因为文本串中的sh已经匹配了,为了优化时间,我们可以找到sh的最长后缀模式串 h,2.继续匹配she后,在文本串中she已经匹配过了,而she在字典树中只...原创 2019-05-10 21:49:49 · 184 阅读 · 0 评论 -
建立(线索)二叉树,求出树的深度,最大结点。
#include<bits/stdc++.h>using namespace std;typedef struct Tnode{ struct Tnode* right; struct Tnode* left; int data;}Node;typedef struct { Node *root; //此处是指针 指向根结点}Tree;/**二叉查找树(Bina...原创 2019-04-27 11:31:37 · 223 阅读 · 0 评论 -
使用尾指针构成循环队列
#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;typedef struct linknode{ linknode *next; int data; }linkNode;void init(linkNode *&rear){ rear...原创 2019-03-23 22:07:29 · 592 阅读 · 0 评论 -
括号匹配问题(利用数据结构书上栈的思想)
括号匹配问题1000(ms)65535(kb)2793 / 11822假设表达式中允许包含两种括号:圆括号和方括号。编写一个算法判断表达式中的括号是否正确配对。输入由括号构成的字符串,包含”(“、”)“、”[“和”]“。输出如果匹配输出YES,否则输出NO。样例输入[([][]())]样例输出YES#include<stdi...原创 2019-03-23 21:14:59 · 331 阅读 · 0 评论 -
kmp算法实现,next数组的一些理解
理解next数组要先理解两个字符串匹配的kmp算法实现kmp算法中 一个串为匹配串,一个串为模式串,next数组同样是利用了kmp算法的实现,只不过他是自己匹配自己然后,自己的后缀为匹配串,前缀为模式串,这个过程就可以理解为一个递归的过程当两个字符串不适配的时候,回溯回退的位置始终是模式串的不适配字符的上一位字符前后缀相同的位置,求next数组,前缀与后缀不适配时,同样是移动模式串...原创 2019-04-23 00:33:16 · 210 阅读 · 0 评论 -
堆排序(完全二叉树用,利用完全二叉树的性质用数组存储)
构建大顶堆:#include<bits/stdc++.h> //堆是完全二叉树 void swap(int tree[],int i,int max) //存在更大的结点值 (使此时最大结点的值与当前最大结点的值交换{ int temp; temp=tree[i]; tree[i]=tree[max]; tree[max]=temp; }void...原创 2019-04-29 19:38:48 · 1015 阅读 · 0 评论 -
字典树
http://acm.hdu.edu.cn/showproblem.php?pid=1251/**字典树的第一个结点不装任何数据一个结点 能够装 26 个字母a[i][j] = value 表示第i(到J字母的母结点字母索引位置)个结点到 的 j(就是对应的此时字母) 为value (对应此时的字母j)的索引位置 **/#include<stdio.h>#...原创 2019-05-07 18:06:21 · 134 阅读 · 0 评论 -
分治算法(排序的实现)
分治排序算法中能够使两个已经排好序的数组重新以从小到大的顺序进行排序,实现上述功能 需要用到两个函数1.合并(merge)函数,(将两个有序数组合并成一个数组) 2.分治排序函数但是如果一个数组中是排序是无序的怎么实现分治排序,此时就要用到分治算法的思想(递归),通过递归将无序的...原创 2019-05-12 17:08:54 · 3784 阅读 · 0 评论