数据结构与算法
文章平均质量分 88
问鼎63
一个努力学习的人
展开
-
AC自动机步骤详解
AC自动机算法意义:求多个字符串是否在主串中出现过。可依据情况分别求出出现次数,出现位置等。学习基础:要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。AC自动机的构造:1.构造一棵Trie,作为AC自动机的搜索数据结构。2.构造fail指针,使当前字符失配时跳转到具有最长公共前后缀的字符继续匹配。如同 KMP算法一样, AC自原创 2015-08-12 16:46:03 · 2309 阅读 · 0 评论 -
威佐夫博奕
威佐夫博奕问题描述:有两堆物品,各若干个,两人分别从其中一堆物品中取若干件物品,或在两堆物品中同时取相同件物品,规定每次至少取一件物品,最后取光者获胜。原创 2015-08-13 16:18:50 · 738 阅读 · 0 评论 -
归并排序
归并排序什么是归并排序:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序的详细介绍:说道归并排序,原创 2015-08-16 11:11:39 · 865 阅读 · 0 评论 -
巴什博奕 hdu oj 2147 kiki's game
不多说了,先上题。hdu oj 2147kiki's gameTime Limit : 5000/1000ms (Java/Other) Memory Limit : 40000/10000K (Java/Other)Total Submission(s) : 8 Accepted Submission(s) : 2Problem Description原创 2015-08-12 10:32:51 · 716 阅读 · 0 评论 -
扩展kmp算法
扩展KMP算法什么是扩展KMP?扩展kmp是求模式串和主串的每一个后缀的最长公共前缀长度。扩展KMP算法是利用前面的已知条件减少多余匹配,达到缩短时间的算法。扩展KMP算法目的是得到next数组和extend数组。next[ i ] 表示的是从自己的第i位开始,模式串T与自己匹配的字符个数。extend[ i ] 表示的是从主串S的第i位开始,模式串T与主串S匹配的字符个数原创 2015-08-14 17:08:41 · 719 阅读 · 0 评论 -
KMP算法
KMP算法什么是KMP算法KMP算法是一种改进的单字符串匹配算法。全名:克努特—莫里斯—普拉特操作(简称KMP算法)KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。KMP算法的实例有这样一个字符串:BBC ABCDAB ABCDABCDABD原创 2015-08-13 22:50:46 · 846 阅读 · 2 评论 -
01背包
01背包什么是01背包?01背包就是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为C1,C2,…,Cn,与之相对应的价值为W1,W2,…,Wn。求将哪些物品装入背包可使总价值最大。01背包的分析:子问题:F[i][j]表示前 i 件物品中选取若干件物品放入剩余空间为 j 的背包中所能得到的最大价值。判断第 i 件物品放还是不放:F [ i ]原创 2015-08-15 09:59:45 · 992 阅读 · 0 评论 -
拓扑排序
拓扑排序什么是拓扑排序:拓扑排序就是将一个有向无环图(Directed Acyclic Graph简称DAG)G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若 ∈E(G),则u在线性序列中出现在v之前。拓扑排序的特性:若将图中顶点按拓扑次序排成一行,则图中所有的有向边均是从左指向右的。当有向图中存在有向环时,拓扑序列不存在,即不能对该图进行拓扑排原创 2015-08-13 21:32:00 · 2180 阅读 · 0 评论 -
巴什博奕
巴什博奕问题描述:只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取m个。最后取光者得胜。问题分析:显然,如果n=m+1,那么由于一次最多只能取m个。所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m)。那么先取者要拿走s个物品。如果后取者原创 2015-08-13 17:58:44 · 648 阅读 · 0 评论 -
最常用的排序——快速排序
最常用的排序——快速排序 - 啊哈磊 上一节的冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了O(N2 )。假如我们的计算机每秒钟可以运行10亿次,那么对1亿个数进行排序,桶排序则只需要0.1秒,而冒泡排序则需要1千万秒,达到115天之久,是不是很吓人。那有没有既不浪费空间又可以快一点的排序算法呢?那就转载 2015-08-12 20:55:52 · 1304 阅读 · 0 评论 -
尼姆博弈
尼姆博奕什么是尼姆博弈:尼姆博奕(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。尼姆博弈分析:我们用(a,b,c)表示某种局势,其中a,b,c分别表示当你选择时每一堆剩余的物品件数。无论谁面对某种局势时,都必败的话,我们称这种局势为奇异局势。首先(0,0,0)显然是奇异局势。第二原创 2015-08-14 11:24:06 · 958 阅读 · 0 评论