Visitors hit counter dreamweaver
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 26 下一页
摘要: 记住KMP是多计算一位的。其中next[i]为不为自身的最大首尾重复子串长度。 位移j=i-next[i]可以看作是构成字符串s的字串(如果i%j==0,存在这样的构成),相应的重复次数也就是n/d。 a b c d *next:-1 0 0 0 0 这时j=i-next[i]; 结果是j==i;于是得到i/j=1. a b c a *next:-1 0 0 0 1 这时j=i-next[i]; 结果是i%j!=0.但是结果还是1。所以这题要考虑如果i%j!=0时也要输出1.即自身。这只是字串等于自身的一种情况。上面的那种情况也是一种#include <iostream>#incl 阅读全文
posted @ 2012-04-04 11:24 Jason Damon 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 这题可以加深对KMP的理解! 题意:给出一个字符串,对于它的每个(each)前缀(prefix)长度 i(2<=i),求能由一个子串构成这个前缀的最大字串数目。看例子比较清楚些吧。我是看别人的才知道的。具体看以参考:http://jovesky.info/blog/2011/08/25/poj-1961-period-c-language-version/例子:字符串为aabaabaabaab前2位也就是aa是a重复2次前6位也就是aabaab是aab重复2次前9位也就是aabaabaab是aab重复3次前12位也就是aabaabaabaab是aab重复4次解题思路:通过KMP的get_ 阅读全文
posted @ 2012-04-04 01:00 Jason Damon 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 没看明白时,觉得很难。弄清楚后其实很简单。虽然说以前学了,但这么久不看了,这次再看时,花了好长时间。。。。一定要给记住了噢。下面我只给出了代码的实现。如果想看详细的话。请移步:http://www.inf.fh-flensburg.de/lang/algorithmen/pattern/kmpen.htm英文的。讲得很好还有就是http://www.slyar.com/blog/kmp.html这位前辈的分析很好啊!他才比我大一届。但看了他的博客,很佩服他。向他看齐吧!看不懂就自己去翻翻数据结构的数吧。 关键在于get_next://Preprocessing algorithmvoid km 阅读全文
posted @ 2012-04-03 22:45 Jason Damon 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 上午我用了Rabin-Karp算法做的。基本的数据可以测试通过,但是一提交就WA。偶滴天啊,我不知道错在哪啊。。我是非专业的。。呜呜。找了半天找不出。算了。看人家都是用KMP做的,那我下午就用KMP写一个吧。一定把它拿下!!哼哼 Rabin-Karp:#include <iostream>#include <fstream>#include <math.h>#include <string.h>using namespace std;#define M 16381*4733+1int nCount;void Rabin_Karp(char*T,c 阅读全文
posted @ 2012-04-03 12:32 Jason Damon 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 再次我推荐touzani的专栏的那篇文章。虽然说和算法导论上面的是一样的,但是我还是没心情看那本黑书,密密麻麻的都是字,还是看网上的爽点。 下面我摘抄点重点的部分来帮助理解吧。其中的h = d m-1 (mod q)但是加入模q后,由ts ≡ p (mod q)不能说明 ts = p.但ts � p (mod q), 可以说明 ts ≠ p,因此当ts ≡ p (mod q)时, 再用朴素的字符串匹配算法验证ts = p。.如果q足够大,可以期望伪命中很少出现。算法RABIN-KARP-MATCHER(T, P, d, q)1 n ← length[T] 2 m ← length[P] 3 . 阅读全文
posted @ 2012-04-03 12:29 Jason Damon 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 方法一: qsort+二分查找。先对字典根据外语来进行qsort.然后通过二分查找即可找到匹配的项。这里用到两个函数sscanf()和bsearch();#include <iostream>#include <fstream>#include <string>using namespace std;char str1[11],str2[11];char str[25];struct dict{ char en[11]; char fn[11];}a[100005];int q_cmp(const void*a,const void*b) { return 阅读全文
posted @ 2012-04-02 19:44 Jason Damon 阅读(1962) 评论(0) 推荐(0) 编辑
摘要: 百度,google了很多关于这个函数的用法。都大同小异,都只是给出了代码,我觉得对我这个初学者来说有点难理解。所以,在这,我综合一下我搜到的知识,把它再加深下印象吧。 ELFhash函数关键是要取得字符串对应的hash值。(别人的分析:它对于长字符串和短字符串都很有效,字符串中每个字符都有同样的作用,它巧妙地对字符的ASCII编码值进行计算,ELFhash函数对于能够比较均匀地把字符串分布在散列表中。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。) ELFhash():参考http://blog.chinaunix.net/uid-24683784-id-3061386.html. 阅读全文
posted @ 2012-04-02 19:38 Jason Damon 阅读(7727) 评论(0) 推荐(1) 编辑
摘要: 转自:http://myclicki.blogbus.com/logs/17335812.html clicki可以通过插件(widget)的方式在blogger自己的网站上展示出自己想要了解的数据。所有页面上的用户访问数据,blogger在自己的网站上就可以看到大部分统计数据,而不用登录到clicki的后台查看数据报表,极大地方便了blogger的操作。 blogger在自己的网页上可以看到以下数据: 当前页面的站外来源统计:访问者是从哪里来到这个页面的?搜索引擎还是其他网站?如果是通过搜索引擎过来的,是哪个搜索引擎?用户输入的关键字是什么? 当前页面的访问者点击统计:clicki可以统计. 阅读全文
posted @ 2012-03-31 12:27 Jason Damon 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 把出现过的每个字母映射到对应的数字,这样字符串就变成相应的nc进制数,然后把它转换成10进制,并放入hash[]中,如果是第一次放入,则总数加一。 例如:(此分析出自http://www.cnblogs.com/lxf90/archive/2011/04/19/2021280.html。感谢他。) 3 4daababacd = 3a = 0b = 1c = 2daa=300(4进制)转换为十进制: daa = 3 * 4 ^ 2 + 0 * 4 ^ 1 + 0 * 4 ^ 0 = 48然后if(!hash[48]) hash[48]++;#include <stdio.h>#inc 阅读全文
posted @ 2012-03-31 12:14 Jason Damon 阅读(970) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>#include <fstream>#include <string>using namespace std;char dict[10005][16];char word[51][16];int count1=0,count2=0;bool Replace(char *d,char *w){ int i; bool flag=false; for(i=0; i<strlen(w); i++) { if(d[i]!=w[i] && flag==false) //不相等 { ... 阅读全文
posted @ 2012-03-31 10:02 Jason Damon 阅读(484) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 26 下一页