- 博客(13)
- 收藏
- 关注
转载 字符串匹配的KMP算法
原文链接:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html作者: 阮一峰日期: 2013年5月 1日字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道
2015-11-22 21:36:48 390
原创 Topcoder SRM565 DIV2 500分-c++
Problem Statement Manao is traversing a valley inhabited by monsters. During his journey, he will encounter several monsters one by one. The scariness of each monster is a positive integer.
2015-02-20 23:09:21 929
转载 动态规划
动态规划:从新手到专家March 26, 2013作者:Hawstein出处:http://hawstein.com/posts/dp-novice-to-advanced.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。前言本文翻译自TopCoder上
2015-02-14 11:41:19 591
原创 树-二叉查找树与红黑树 c++
二叉查找树:1.若左子树非空,则左子树所有结点小于根结点。2.若右子树非空,则右子树所有结点大于根结点。3.其左右子树也为二叉查找树。二叉排序树可用作字典,也可做优先队列。其主要支持的操作有:Search,Insert,Delete。这三个操作的时间复杂度都与树高有关,为O(h)。但由于插入顺序的不同,二叉树的构造也不同,若按从小到大插入或从大到小插入,则二叉树将退化为链表,其三个
2015-01-30 23:37:18 565
原创 树-哈夫曼编码树 c++
哈夫曼树也称为最优二叉树,其叶子结点带有权值,所有根结点到叶子结点的路径长度与该叶子结点的权值乘积之和被称为带权路径长度。对于一组确定权值的叶子结点,哈夫曼树是具有最小带权路径长度的二叉树。哈夫曼算法:对于给定的n个权值构造n个只有根结点的二叉树,其集合为F;选取F中根结点权值最小的两个两颗树分别作为左右子树合并为一颗新二叉树,其根结点权值为左右子树根结点之和;将新树加入F,而合并前的
2015-01-25 22:25:35 787
原创 图论-AOV网与拓扑排序&AOE网与关键路径 c++
AOV网为有向图,用其表示一项工程,则顶点表示活动,弧表示活动之间的优先关系。此时AOV网中不能出现回路,否则会出现某活动开始是以自身为先决条件这样的问题。拓扑排序就是用以测试AOV网是否存在回路的方法。拓扑排序适合图的邻接表存储形式。拓扑序列:对有向图G=(V,E),V中顶点序列v0,v1,...,vn-1为拓扑序列,当且仅当满足:若从顶点vi到vj存在一条路径,则在顶点序列中vi一定在vj
2015-01-25 19:58:57 1991
原创 图论-最小生成树-prime算法&Kruskal算法 c++
最小生成树解决的是找出图的最小连通路径,其具有MST性质:假设图G=(V,E)为一个无向连通图,U是顶点集V的一个非空子集,而u∈U,v∈V-U。若(u,v)为一条两个集合间具有最小权值的边,则必存在一颗包含(u,v)的最小生成树。Prime算法和Kruskal算法皆利用此性质得到最小生成树。
2013-08-17 20:01:22 1140
原创 图论-最短路-Dijkstra算法&Floyd算 c++
最短路径解决了求解一个图中两顶点之间最短的路径问题。其中Dijkstra算法应用贪心法求解单源点到其余各点的最短路径问题;而Floyd算法则解决了图中任意两点间的最短路径问题。
2013-08-17 19:58:42 2348
原创 组合-字典序打印所有排列
//要生成所有排列,就要考虑从当前序列生成下一字典序的序列 char s[51];bool get(int n){ int i,j,k; for(j=n-1;j>0;j--)//从右向左找到最后一个正序尾的下标 { if(s[j]>s[j-1]) { i=j; br
2013-08-17 19:55:59 795
原创 组合-组合数求法
//c(n,r)=n!/(r!*(n-r)!),要求组合数就要求阶乘,而阶乘是个很大的数,普通int肯定会溢出。//法一://求(n-r+1)/(r)*....*n/1,就是一边乘同时一边除 typedef __int64 LL;void print(LL n,LL r){ if(r>n/2)r=n-r;//c(n,r)=c(n,n-r)用此来减少计算次数
2013-08-17 19:54:21 664
原创 hdu1116&poj1386 并查集加欧拉路径的判断
Play on WordsTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4216 Accepted Submission(s): 1363Problem DescriptionSome of the secret do
2013-08-09 19:14:49 595
原创 hdu1025 最大递增子序列的优化
Constructing Roads In JGShining's KingdomTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12371 Accepted Submission(s): 3526Problem Descri
2013-08-09 18:59:32 452
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人