自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (2)
  • 收藏
  • 关注

原创 SPFA

建立一个队列,初始时队列里只有起始点,再建立一个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极大值,该点到他本身的路径赋为0)。然后执行松弛操作,用队列里有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加入到队列最后。重复执行直到队列为空。如果某个点进入队列的次数超过N次则存在负环(SPFA无法处理带负环的图){CSDN:CODE:228856

2017-03-24 14:50:26 169

原创 Bellman-Ford模板

Dijkstra算法无法判断含负权边的图的最短路。如果遇到负权,在没有负权回路存在时(负权回路的含义是,回路的权值和为负。)即便有负权的边,也可以采用Bellman-Ford算法正确求出最短路径。主要是做N次松弛,用变量记录入队列的次数和是否入过队列,如果每次都如队列则判定有负环#include #include #include #include #include #includ

2017-03-24 14:09:07 293

原创 Floyd(各对顶点之间的最短距离)

我们其实可以求n次Dijkstra,就可以求出各对顶点的最短路了。但是这不是重点,有一个比他更清晰易懂的算法—Floyd假设从i到j的最短路径上要经过若干个顶点,这些中间顶点中最大的顶点编号为k,最小的顶点为t,因此要求算dist[i][j]的最小值,那么只需要求算dist[i][s]+dist[s][j](t#include #include #include #include

2017-03-24 11:51:59 968

原创 Aho-Corasick 多模式匹配算法

 核心思想简介KMP算法一样, AC自动机在匹配时如果当前字符匹配失败,那么利用fail指针进行跳转。由此可知如果跳转,跳转到的串的前缀,必为跳转前的模式串的后缀。由此可知,跳转的新位置的深度一定小于跳之前的节点。所以我们可以利用 bfs在 Trie上面进行 fail指针的求解。 设这个节点上的字母为x,沿着他父亲的失败指针走,直到走到一个节点,他的儿子中也有字母为x的节点。然后把...

2017-03-23 17:42:48 413

原创 Trie树

https://vjudge.net/problem/UVALive-3942前缀树:#include #include #include #include #include #include #include #define max_length 300100#define sigma_size 27#define MODE 20071027#define max_

2017-03-23 15:34:21 173

原创 KMP(前缀数组)

KMP简洁:KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。举个例子吧!举例来说,有一个字符串"

2017-03-23 14:43:59 715

原创 堆排序

维护一个完全二叉树.这个是一个小根堆的实现#include#include#include#define maxn 200using namespace std;int arr[maxn];void upAdjuest(int a[], int pos) { int temp = a[pos]; int j = (pos - 1) / 2; while

2017-03-21 18:17:51 164

原创 快速排序

快速排序其实就是冒泡的一种改进版本.他是不稳定的一种排序方法.合理的用分治的思想处理排序问题.#include #include #include #define maxn 1<<10using namespace std;int arr[maxn];void qsort(int a[],int left,int right) { if(left >= rig

2017-03-20 22:48:07 159

原创 avl 平衡二叉树

实现平衡二叉树参考博客:http://blog.csdn.net/whucyl/article/details/17289841参考博客:http://www.cnblogs.com/QG-whz/p/5167238.html个人实现代码:#include #include #include using namespace std;struct BinaryTreeNo...

2017-03-19 13:25:08 244

原创 循环队列的简单实现

#include #include #include #define maxn 20#define add_length 5using namespace std;typedef struct Node{ int rear; int front; int size; int *data;}*LoopQueue;void Init(LoopQueu

2017-03-17 17:15:08 224

原创 链队列简单实现

实现的时候遇到了简单问题。传指针进去才行。#include #include #include #define maxn 20using namespace std;typedef struct QNode { int data; struct QNode *next;}QNode;typedef struct LinkQueue{ QNode * fr

2017-03-16 22:07:06 182

原创 栈的简单实现

栈的简单实现#include #include #include #define max_stack_length 20#define append_stack_length 5using namespace std;typedef struct { int *base; int *top; int stackSize;}SqStack;///初始化栈

2017-03-08 22:41:14 164

原创 双链表实现

在实现双端链表的时候,由于图简单,没加哨兵。导致删除节点的时候出现free首节点无法删除。原因是:引用 这篇博客 http://blog.csdn.net/llhyy17/article/details/5375298需要将头节点往前移一个数据类型占用的内存大小。然后将这个地方的位置标记为可以使用的。这个时候就出现了内存访问非法了。 #include #include #inc

2017-03-07 21:14:58 198

原创 单链表的简单实现

#include #include #include #define max_list_length 20#define expand_list_length 5using namespace std;#include#include typedef struct Node { struct Node *next; int value;} Node, *List;

2017-03-05 21:14:24 162

POJ 2676 代码 搜索数独答案

简单搜索题 数独 答案 POJ 2676 也可以没事玩玩数独。

2013-09-15

驾驶行为仿真实验平台

驾驶行为仿真实验平台仿真技术介绍是一个实验平台吗,讲述的是基本原理及实现。

2013-03-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除