05 2012 档案

寻找出现次数最多的数据
摘要:见编程之美在一堆数里随便拿一个数,再找一个与它不相等的,然后一起扔掉,这样问题规模不断缩小,最终等到找不到一个不相等的数时,就成功 了。但要简化算法,就不能每拿一个数就统统找一遍。可以考虑准备一个队列,队列里放着暂时扔不掉的数。如从头开始,将a[0]放入队列,再看a[1],如 果a[0] != a[1],则扔掉a[1]和a[0],a[0]从队列取出;如果a[0] == a[1],则a[1]入队列,然后a[2]进行相同的操作,以此类推。 1 int FindMaxcountNum(const int* pArr, const size_t size) 2 { 3 int nValue;... 阅读全文

posted @ 2012-05-31 15:50 梦想Sky 阅读(658) 评论(0) 推荐(0)

MFC的RTTI实现
摘要:C++设计者在C++使用的早期并没有意识到RTTI(运行时类型检查)的重要性,后来随作框架结构的类库出现及其应用越来越广泛,RTTI就变得越来越重要了。例如下面的这个语句: CWnd *pWnd;任何人都知道对象pWnd是CWnd类型的指针。但是如果有一个类CView是从CWnd派生来的,对于下面的语句: CWnd* CreateView() { return new CView; }对 于使用CreateView()的用户而然,pWnd = CreateView(),他如何确定pWnd所指向的对象的真正类型呢?因此,必须有一个能够在运行时刻就能够确定指针对象类型的方法,比如给每一... 阅读全文

posted @ 2012-05-28 10:45 梦想Sky 阅读(2777) 评论(0) 推荐(0)

MFC消息响应机制分析
摘要:---- MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析,可以帮助程序开发人员对MFC的消息映射机制有一个比较透彻的了解。1.引言---- VC++的MFC类库实际上是Windows下C++编程的一套最为流行的类库。MFC的框架结构大大方便了程序员的编程工作,但是为了更加有效、灵活的使用MFC编程,了解MFC的体系结构往往可以使编程工作事半功倍。它合理的封装了WIN32 API函数,并设计了一套方便的消息映射机制。但这套机制本身比较庞大和复杂,对它的分析和了解无疑有助于 阅读全文

posted @ 2012-05-28 09:49 梦想Sky 阅读(33481) 评论(2) 推荐(8)

BM字符串匹配算法
摘要:在用于查找子字符串的算法当中,BM(Boyer-Moore)算法是目前相当有效又容易理解的一种,一般情况下,比KMP算法快3-5倍。BM算法在移动模式串的时候是从左到右,而进行比较的时候是从右到左的。BM算法实际上包含两个并行的算法,坏字符算法和好后缀算法。这两种算法的目的就是让模式串每次向右移动尽可能大的距离(j+=x,x尽可能的大)。几个定义:例主串和模式串如下:主串 : mahtavaatalomaisema omalomailuun模式串: maisemaomaloma好后缀:模式串中的aloma为“好后缀”。坏字符:主串中的“t”为坏字符。好后缀算法如果程序匹配了一个好后缀, 并且在 阅读全文

posted @ 2012-05-04 19:57 梦想Sky 阅读(7243) 评论(1) 推荐(1)

ZBox字符串匹配算法
摘要:Zbox 的意思:一个字符串 S ,它的子串 S[i..n], 用 Z[i] 表示 S[i..n] 与 S 精确匹配的最长前缀的长度。如:abcdabce , Z[5] = 3。如图 1:1 2 3 4 5 6 7 8 a b c d a b c e |___| |___| zbox那么如何把 S中所有的 Z[i]找出来呢?并且让它的时间是线性的。如图 2: |____|___|_____________|____|___|______|1 22 31100 121 130 n k'|_g_| k Z[100] = 31,求 Z[121] = ?可以看出,因为 Z[100] = 31, 阅读全文

posted @ 2012-05-04 16:53 梦想Sky 阅读(1216) 评论(0) 推荐(0)

导航