摘要: Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作。如果你比较熟悉Perl的正规表达式,可以直接参照与Perl正则表达式的区别一节。一、使用正则表达式的命令使用正则表达式的命令最常见的就是/ (搜索)命令。其格式如下:/正则表达式另一个很有用的命令就是:s(替换)命令,将第一个//之间的正则表达式替换成第二个//之间的字符串。:s/正则表达式/替换字符串/选项在学习正则表达式时可以利用/命令来练习。二、元字符元字符是具有特殊意义的字符。使用元字符可以表达任意字符、行首、行 尾、某几个字符等意义。元字符一览元字符说明.匹配任意一个字符[abc]匹配方括号中的任意一个字符 阅读全文
posted @ 2013-06-24 20:51 PegasusWang 阅读(36718) 评论(0) 推荐(3) 编辑
摘要: 首页|常用正则表达式|正则表达式测试工具正则表达式30分钟入门教程版本:v2.33 (2013-1-10) 作者:deerchao转载请注明来源目录跳过目录本文目标如何使用本教程正则表达式到底是什么东西?入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作者网上的资源及本文参考文献更新纪录本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。如何使用本教程最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门——除非 阅读全文
posted @ 2013-06-23 22:46 PegasusWang 阅读(769) 评论(0) 推荐(0) 编辑
摘要: 先贴个网上找的比较通俗易懂的教程:2.1Dijkstra算法(非负权,使用于有向图和无向图) Dijkstra算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。 2.2 Dijkstra算法思想Dijkstra算法思想为:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表. 阅读全文
posted @ 2013-06-18 18:24 PegasusWang 阅读(1284) 评论(0) 推荐(0) 编辑
摘要: Timus 1017. The Staircases要求计算给定数目的砖块可以组成多少种不同的楼梯。1017. The StaircasesTime Limit: 1.0 secondMemory Limit: 16 MBOne curious child has a set ofNlittle bricks (5 ≤N≤ 500). From these bricks he builds different staircases. Staircase consists of steps of different sizes in a strictly descending order. It 阅读全文
posted @ 2013-06-07 11:43 PegasusWang 阅读(279) 评论(0) 推荐(0) 编辑
摘要: C++ string 详解任何人对本文进行引用都要标明作者是Nicolai M.Josuttis///////////////////////////////////////////////////////////////////////////////////C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用C或者C++,为什么?原因众多,其中之一就是C/C++的文本处理功能太麻烦,用起来很不方便。以前没有接触过其他语言时,每当别人这么说,我总是不屑一顾,认为他们根本就没有领会C++的精华,或者不太懂C++,现在我接触 perl, php, 和Shell脚本以后,开始 阅读全文
posted @ 2013-06-06 12:50 PegasusWang 阅读(1199) 评论(0) 推荐(0) 编辑
摘要: 在C/C++中,64为整型一直是一种没有确定规范的数据类型。现今主流的编译器中,对64为整型的支持也是标准不一,形态各异。一般来说,64位整型的定义方式有long long和__int64两种(VC还支持_int64),而输出到标准输出方式有printf("%lld",a),printf("%I64d",a),和cout << a三种方式。本文讨论的是五种常用的C/C++编译器对64位整型的支持,这五种编译器分别是gcc(mingw32),g++(mingw32),gcc(linux i386),g++(linux i386),Microso 阅读全文
posted @ 2013-06-06 12:40 PegasusWang 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 循环字符串的最小表示法的问题可以这样描述:对于一个字符串S,求S的循环的同构字符串S’中字典序最小的一个。由于语言能力有限,还是用实际例子来解释比较容易:设S=bcad,且S’是S的循环同构的串。S’可以是bcad或者cadb,adbc,dbca。而且最小表示的S’是adbc。对于字符串循环同构的最小表示法,其问题实质是求S串的一个位置,从这个位置开始循环输出S,得到的S’字典序最小。一种朴素的方法是设计i,j两个指针。其中i指向最小表示的位置,j作为比较指针。令i=0,j=1如果S[i] > S[j] i=j, j=i+1如果S[i] < S[j] j++如果S[i]==S[j] 阅读全文
posted @ 2013-05-28 22:42 PegasusWang 阅读(1026) 评论(0) 推荐(0) 编辑
摘要: 涉及到字符串的问题,无外乎这样一些算法和数据结构:自动机 KMP算法 Extend-KMP 后缀树 后缀数组 trie树 trie图及其应用。当然这些都是比较高级的数据结构和算法,而这里面最常用和最熟悉的大概是kmp,即使如此还是有相当一部分人也不理解kmp,更别说其他的了。当然一般的字符串问题中,我们只要用简单的暴力算法就可以解决了,然后如果暴力效率太低,就用个hash。当然hash也是一个面试中经常被用到的方法。这样看来,这样的一些算法和数据结构实际上很少会被问到,不过如果使用它们一般可以得到很好的线性复杂度的算法。老实说,我也一直觉得字符串问题挺复杂的,出来一个如果用暴力,hash搞不定 阅读全文
posted @ 2013-05-28 13:30 PegasusWang 阅读(454) 评论(0) 推荐(0) 编辑
摘要: AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法。解决的问题:给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。(也是解决web开发中关键字链接的常用算法:n个关键字,1篇文章,找出关键字在文章出现的位置)思路:在一棵trie树上面做Kmp,每个节点都有个像Kmp一样匹配失败时的指针(失败指针),匹配失败时按照失败指针指向的节点继续匹配。要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。AC自动机算法分为3步:构造一棵Trie树,构造失败指针和模式匹配过程。KMP中我 阅读全文
posted @ 2013-05-27 16:47 PegasusWang 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 在用计算机的一些智能算法(GA,PSO,ANN etc.)仿真时经常需要随机生成初始种群(初始样本),看看<stdlib.h>中的这两个函数的伪随机数生成吧~~~1. 生成[a,b]之间的一个实数和一个整数[cpp]view plaincopy/*定义函数intrand(void);函数说明rand()会返回一随机数值,范围在0至RAND_MAX间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。关于随机数种子请参考srand()。返回值返回0至RAND_MAX之间的随机数值,RAND_MAX定义在s 阅读全文
posted @ 2013-05-23 19:17 PegasusWang 阅读(678) 评论(0) 推荐(0) 编辑