
算法
文章平均质量分 92
超然_烟火
超然于物外 烟火于一瞬
展开
-
【模式匹配】之——多模匹配 上篇(AC算法)
前言多模匹配之二维数组法代码多模匹配之二维数组法原理讲解二维数组构造方法多模匹配过程及代码实现二维数组法适用于模糊匹配二维表多模匹配的局限性二维表的优化总结完整的实现代码和扩展代码在下面给出的网址中可下载:http://download.youkuaiyun.com/detail/sun2043430/5276263前言多模匹配的意思在目标字符串中同时查找多个模式串,比较常用的原创 2013-04-19 01:06:31 · 4151 阅读 · 0 评论 -
动态规划算法
前言最近帮同学写一个程序,给出100多个金额,用数组表示为money[1-100],再给出一个数额SUM。如果money数组里面有哪几项之和等于SUM,那么这几项就是符合条件的一个组合。现在需要做的是,找出所有符合要求的组合。举一个简单的例子,假设money为{1,1,2,3,4},和为6的所有组合为1+1+4, 1+2+3,1+2+3,2+4。对于我同学给的这个程序要求,不算原创 2013-06-21 14:38:46 · 3318 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——4 构造DFA
整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.git接上篇《正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数》本章将介绍如何使用followpos集合来构建DFA。相关算法和例子在龙书中文第二版的3.9.5节(根据正则表达式构建DFA),算法3.36和例3.原创 2013-06-26 20:40:43 · 2789 阅读 · 1 评论 -
传球问题图解
今天翻陈皓(http://coolshell.cn)前辈的博客,看到一些有意思的题目,比如这个:http://coolshell.cn/articles/1976.html有a,b,c,d,四个人互相传球从a开始传出经过5次传球后球回到a的手里算总共有多少种传球的方法下面评论里面很多高手给出了排列组合公式的算法,无奈这方面学的不好,只好在纸上画了树状图来揣摩原创 2013-07-23 13:56:07 · 4379 阅读 · 0 评论 -
几种二分查找算法的代码和比较
二分查找的4种代码写法原创 2013-08-06 21:50:33 · 2234 阅读 · 0 评论 -
【庞果英雄会】最小操作数
给了A、B两个单词和一个单词集合Dict,每个的长度都相同。我们希望通过若干次操作把单词A变成单词B,每次操作可以改变单词中的一个字母,同时,新产生的单词必须是在给定的单词集合Dict中。求所有行得通步数最少的修改方法。 举个例子如下: Given: A = "hit" B = "cog" Dict = ["hot","dot","dog","lot","log原创 2013-07-14 21:32:24 · 2806 阅读 · 5 评论 -
A*寻路算法实现文章(不完全翻译)
文章来源:http://theory.stanford.edu/~amitp/GameProgramming/ImplementationNotes.htmlSketch概述The A* algorithm, stripped of all the code, is fairly simple. There are two sets, OPEN and CLOSED. The翻译 2013-08-11 13:23:09 · 1481 阅读 · 0 评论 -
A*寻路算法讲解+源码DEMO演示
本文源码下载地址:http://download.youkuaiyun.com/detail/sun2043430/5907609源起最近回头温习云风的书,看到A*寻路算法,这个算法也是我一直想学习实现一下的。趁着周末有空练习练习。网上关于A*算法的文章、代码和示例已经相当多了,有很多文章写的都很好,还有很多国外的网页用JS动态演示了A*算法寻路的过程。我找到的一些资源如下:1 htt原创 2013-08-11 16:21:57 · 8146 阅读 · 2 评论 -
【庞果网】建立信号基站题解
题目链接 http://hero.pongo.cn/Question/Details?ID=81&ExamID=79题目详情要建立一个信号基站服务n个村庄,这n个村庄用平面上的n个点表示。假设基站建立的位置在(X,Y),则它对某个村庄(x,y)的距离为max{|X – x|, |Y – y|}, 其中| |表示绝对值,我们的目标是让所有村庄到信号基站的距离和最小。基站可原创 2013-09-14 21:22:40 · 2871 阅读 · 1 评论 -
Geohash——地理坐标索引
今天看july的博客:第三十六~三十七章、搜索智能提示suggestion,附近地点搜索(http://blog.youkuaiyun.com/v_july_v/article/details/11288807)里面提到了geohash算法对地理坐标的索引,但是引用的文章和例子让我产生了疑问,对于坐标的经纬度不应该是直接让纬度跟随在经度之后形成一个索引值的,这样只能保证经度相同的且靠近的点排列的比原创 2013-09-20 21:36:29 · 2551 阅读 · 0 评论 -
【题解】英雄会第二届在线编程大赛·优快云现场决赛:三元组的数量
int g_array[1+5000000] = {0};// x(4y-x) = Nint num2(int a, int b) { int ret = 0; memset(g_array, 0, sizeof(g_array)); int max = (int)sqrt((double)b); for (int x = 1; x <= max; x++) {原创 2014-01-01 10:53:57 · 1273 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数
整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.gitnullable, firstpos, lastpos, followpos函数介绍接着上两篇文章《正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——1 概述》《正则表达式引擎的构建——基于编译原理DFA(龙原创 2013-06-24 13:32:01 · 3536 阅读 · 0 评论 -
【模式匹配】之——多模匹配 下篇(AC算法之前缀树实现)
前言本文章对应代码下载地址:http://download.youkuaiyun.com/detail/sun2043430/5286986AC算法之前缀树实现步骤步骤一 构造前缀树步骤二 设置每一个节点的Failure Node步骤三 收集每个节点的所有匹配模式串信息步骤四 对目标串进行搜索匹配AC自动机进行字符串匹配的过程,可以参考维基百科的说明:htt原创 2013-04-21 23:00:25 · 4371 阅读 · 2 评论 -
【庞果网英雄会】4月第4次面试集训#字符串#:字符串匹配问题
题目详情字符串匹配问题,给定一串字符串,按照指定规则对其进行匹配,并将匹配的结果保存至output数组中,多个匹配项用空格间隔,最后一个不需要空格。要求:匹配规则中包含通配符?和*,其中?表示匹配任意一个字符,*表示匹配任意多个(>=0)字符。匹配规则要求匹配最大的字符子串,例如a*d,匹配abbdd而非abbd,即最大匹配子串。匹配后的输入串不再进行匹配,原创 2013-05-15 21:04:29 · 1459 阅读 · 0 评论 -
【模式匹配】之——多模匹配 Wu-Manber算法
本文对应代码下载地址:http://download.youkuaiyun.com/detail/sun2043430/5323248本文参考以下两篇文章,在此表示感谢https://memorycn.wordpress.com/2011/11/05/matching_algorithm_-_wu-manber_algorithm_based_on_the_the_suffix_s原创 2013-05-02 15:53:04 · 8734 阅读 · 2 评论 -
【面试题】求两个有序数组两两相加的值最小的K个数
题目:有两个大小都是k的数组A,B,它们元素的按非递减有序排列,找出这样的k个最小的(ai + bj) ,其中 0例如对于:A = 1,2,3,4B = 2,3,4,5ai+bj的所有组合有4*4 = 16个,如下图:b\a 1 2 3 42 3 4 5 63 4 5 6 74 5 6 7 85原创 2013-05-15 22:10:44 · 7028 阅读 · 1 评论 -
【模式匹配】之 —— BM算法
坏字符规则The Bad Character Algorithm坏字符规则代码实现好后缀规则The Good Suffix Rule好后缀规则代码实现完整的BM算法测试BM算法的代码源码下载地址:http://download.youkuaiyun.com/detail/sun2043430/5272376BM算法由坏字符规则和好后缀规则两部分组成。我们一个一个来看。坏字符原创 2013-04-17 23:41:37 · 4417 阅读 · 0 评论 -
一个完备的微型正则表达式【源码实现】
说明:刚才发现在处理*元字符时弄错了,代码修改重新上传到优快云了,文章中的示例代码也进行了修改。 前一版本有错误的代码中将*处理成了前一字符至少出现1次,修改后为出现0次或多次。 如果你是通过优快云下载找到这个页面的,请务必留意,你下载的可能不是最终版的代码。最终版代码下载地址: http://download.youkuaiyun.com/detail/sun2原创 2013-05-05 13:16:37 · 2566 阅读 · 0 评论 -
【模式匹配】之 —— Sunday算法
本文代码下载地址http://download.youkuaiyun.com/detail/sun2043430/5273911Sunday算法思路Sunday算法的思想和BM算法中的坏字符思想非常类似。差别只是在于Sunday算法在失配之后,是取目标串中当前和模式串对应的部分后面一个位置的字符来做坏字符匹配。如下图:下标数:01234567890目标串:abcdefghijk原创 2013-04-18 17:52:15 · 14244 阅读 · 4 评论 -
【模式匹配】之 —— KMP算法详解及证明
一 RevisionsHistory 1一 Revisions History二 前言三 关于算法学习四 KMP算法始末KMP算法是用来干什么的KMP算法是怎样产生的从暴力搜索算法讲起KMP算法的思想KMP算法的代码实现KMP算法改进使用KMP算法在目标字符串中查找所有匹配的位置使用Z-BOX算法计算next数组五原创 2013-04-15 10:14:41 · 11925 阅读 · 6 评论 -
【模式匹配】之 —— Z-BOX算法
一 Z-BOX的概念二 Z-BOX算法的计算过程三 Z-BOX算法的代码实现C语言版四 Z-BOX算法在具体的模式匹配字符串查找中的应用五 总结 在字符串的模式匹配中,有单模匹配和多模匹配之分。本系列文章将对单模匹配和多模匹配逐一进行讲解。其中单模匹配中将会讲解以下几个算法:Z-BOX算法KMP算法BM算法sunday算法第一篇文章,我们从Z-BOX算法开始讲起,因为原创 2013-04-10 23:47:52 · 6142 阅读 · 1 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——1 概述
说明:本系列文章介绍的算法均来自编译原理(龙书)一书,如果读者对代码没有兴趣,只想了解算法思路,完全可以阅读龙书相关章节内容,比我讲得清晰透彻。序: 啃编译原理半年以来,任然徘徊在前4章,其间反反复复,时而不求甚解,时而略有所悟。后来接触到正则表达式,对其实现原理颇有兴趣,于是百度之、谷歌之,以求解惑。先是搜索到不少国内发表的学术论文和各位大侠博客上的文章,后又通原创 2013-06-09 14:00:32 · 5362 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——2 构造抽象语法树
简要介绍 构造抽象语法树是构造基于DFA的正则表达式引擎的第一步。目前在我实现的这个正则表达式的雏形中,正则表达式的运算符有3种,表示选择的|运算符,表示星号运算的*运算符,表示连接的运算符cat(在实际正则表达式中被省去)。例如对于正则表达式a*b|c,在a*和b之间省略了连接运算符cat。其中|、cat运算符是双目运算符,*运算符是单目运算符。下图来自编译原理一书:原创 2013-06-09 16:59:47 · 5866 阅读 · 0 评论 -
正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——5 DFA最小化
完整引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.gitDFA最小化的算法原理“DFA状态最小化算法的工作原理是将一个DFA的状态集合分划成多个组,每个组中的各个状态之间相互不可区分。然后,将每个组中的状态合并成状态最少DFA的一个状态。算法在执行过程中维护了状态集合的一个分划原创 2013-07-18 23:39:23 · 3384 阅读 · 2 评论