设计一个支持‘.' 和 '*' 的正则表达式匹配算法。
这个题复杂的地方在于对于 '*' 的处理,这个符号在正则表达式中被称为贪婪型的量词。这个量词在实际匹配过程中也是尽可能多的匹配直到词尾或者不匹配成功才结束,然后如果其后面还有没有匹配的,则回退到合适的位置,然后才进行下一个匹配。正则表达式中的匹配优先与回溯大概也就是这个意思。关于正则表达式这方面的知识,有兴趣可以读读《精通正则表达式》的第4章表达式的匹配原理。
回到本题,正因为 '*'的特殊性,我们在分类的时候选择根据 '*' 来进行,分类后其子问题也...
分类:
其他好文 时间:
2014-06-20 09:40:42
阅读次数:
207
兑换硬币问题,是贪婪算法的经典问题,本文不仅用python演示了这个算法,更指出此算法存在的问题,即不一定得到的结果都是最优解。...
分类:
其他好文 时间:
2014-06-18 11:23:08
阅读次数:
222
?匹配0次或1次。但是?还有第二个含义,作为正则的懒惰模式。正则有两种模式,一种为贪婪模式(默认),另外一种为懒惰模式,以下为例:(abc)dfe(gh)对上面这个字符串使用(.*)将会匹配整个字符串,因为正则默认是尽可能多的匹配。虽然(abc)满足我们的表达式,但是(abc)dfe(gh)也同样满...
分类:
其他好文 时间:
2014-06-16 13:53:48
阅读次数:
169
【题目描述】对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少。
在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人。
然而,在任何一群朋友中,有些人将送出较多的礼物(可能是因为有较多的朋友),有些人有准备了较多的钱。 给出一群朋友,没...
分类:
其他好文 时间:
2014-06-07 03:55:51
阅读次数:
205
版本:v2.32 (2011-8-17)
作者:deerchao转载请注明来源目录跳过目录本文目标如何使用本教程正则表达式到底是什么东西?入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作者网上的资源...
分类:
其他好文 时间:
2014-06-02 17:22:48
阅读次数:
351
熟悉正则的朋友都知道,正则的匹配有“贪婪”和“非贪婪”之分。“贪婪”匹配是尽可能多的匹配:对于字符串‘aaaa’,/a+/匹配整个字符串,而非贪婪匹配/a+?/匹配的是整个字符串的第一个‘a’,因为贪婪匹配是尽可能少的匹配。——————————————使用非贪婪匹配还有一些需要注意的地方。考虑下面这...
分类:
编程语言 时间:
2014-05-26 00:57:06
阅读次数:
693
有经验的股民大都赞同“炒股就是炒心理”,其大意是强调心理因素对股票投资的重要影响作用。与此对应,股市中还流传着不少支持这个观点的俚语,如“离贪婪和恐惧越远,成功的机会就越大”、“自己是最难战胜的敌人”等等。实际上,包括巴菲特、索罗斯在内的投资专家总是忠告股民“减少情绪冲动,保持良好的投资心态”。然而...
分类:
其他好文 时间:
2014-05-20 00:33:01
阅读次数:
289
【问题】
Kruskal算法求加权连通图的最小生成树的算法。kruskal算法总共选择n- 1条边,所使用的贪婪准则是:从剩下的边中选择一条不会产生环路的具有最小耗费的边加入已选择的边的集合中。注意到所选取的边若产生环路则不可能形成一棵生成树。kruskal算法分e
步,其中e 是网络中边的数目。按耗费递增的顺序来考虑这e 条边,每次考虑一条边。当考虑某条边时,若将其加入到已选边的集合中会出...
分类:
编程语言 时间:
2014-05-13 23:16:45
阅读次数:
610