![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
ac011_
这个作者很懒,什么都没留下…
展开
-
KMP算法
KMP算法是一种字符串模式匹配算法,找到主串中是否存在与子串相同的另一个子串;void get_next(string T, int next[]) { //next数组 int i = 1, j = 0; next[1] = 0; while (i < T.size()) { if (j == 0 || T.ch[i] == T.ch[j]) { i++; j++; next[i] = j; } else j = next[j]; }}int KM.原创 2020-09-11 07:32:28 · 184 阅读 · 0 评论 -
字典树 Trie
#include<string>#include<iostream>using namespace std;struct node { node* nxt[26]; int flag; node() { for (int i = 0; i < 26; i++) nxt[i] = nullptr; }};node* root;void init() { root = new node();}void ins(string s) { int原创 2021-04-23 16:44:21 · 166 阅读 · 0 评论 -
最小生成树 kruskal,prim
kruskaltypedef struct s { int a, b; int weight;}Edge;void kruskal(Graph G, Edge* e, int* parent) { sort(e); //按边的权值进行排序 init(parent); //初始化并查集 for (int i = 0; i < G.num; i++) { int a_root = find(parent, e[i].a); int b_root = find(parent原创 2021-04-22 21:12:03 · 179 阅读 · 0 评论 -
最短路径(dijistra ,floyd)
dijistraconst int N = 10;int used[N]; //用没有用过int path[N]; //i的前一个节点int dist[N]; //最短路径void f(Graph G, int v) { for (int i = 0; i < N; i++) { used[i] = 0; dist[i] = G.edge[v][i]; if (G.edge[v][i] < Max) path[i] = v; else path[i] = -1; }原创 2021-04-22 20:08:43 · 177 阅读 · 0 评论