自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 动态规划 (Dynamic Programming) 之 最长递增子序列(Longest Increase Subsequence)

既然已经说到了最长公共子序列,就把这个递增子序列也说了。同样的,这里subsequence表明了这样的子序列不要求是连续的。比如说有子序列{1, 9, 3, 8, 11, 4, 5, 6, 4, 19, 7, 1, 7 }这样一个字符串的的最长递增子序列就是{1,3,4,5,6,7}或者{1,3,4,5,6,19}。其实这个问题和前面的最长公共子序列问题还是有一定的关联的。假设我们的初始的序列

2009-03-02 16:43:00 15051 5

原创 动态规划 (Dynamic Programming) 之 最长公共子序列(Longest Common Subsequence)

这个问题也是算法导论上提过的问题。注意这个问题是Subsequence不是Substring。substring的话就是子串,子串的要求的连续相等的字符序列,而subsequence不要求连续。比如说ABCD和ABD。他们的longest common subsequence就是ABD。而Longest common substring就是AB。这个问题和Edit Distance是同样的一类

2009-03-02 11:20:00 13555 3

原创 动态规划 (Dynamic Programming) 之 矩阵链乘法(Matrix Chain Multiplication)

这个问题是动态规划的基础的问题,也是算法导论中讨论过的问题。在这里先简单描述一下。假定有一组矩阵需要做乘法操作。但是我们知道首先矩阵乘法满足了结合律。所以可以按照不同的顺序做乘法。而且不同顺序做乘法最后的乘法次数是不同的。比如〈A1, A2, A3〉分别是10 × 100, 100 × 5, 和 5 × 50。如果按照((A1 A2) A3)的顺序来计算,就是7500次,但是如果(A1 (A2

2009-02-27 15:36:00 14522

原创 《C++ Template. The Complete Guide》笔记之三 Class Templates

在粗粗地说了Function Templates之后,肯定要说说最主要的的Class Templates。因为是开始,所以肯定要说的明白点,清楚点:#include #include template class Stack { private: std::vector elems; // elements public: void push

2009-02-20 14:15:00 2091

原创 《C++ Template. The Complete Guide》笔记之二 Function Templates

大约是受宏(预处理)的压迫太深,所以有了模板以后的第一件事情便是定义模板函数来取代那些MAX和MIN。作者也乐得如此,下面我就马上来看一个最简单的模板函数max的实现:template inline T const& max (T const& a, T const& b){ // if a < b then use b else use a return a <

2009-02-17 13:58:00 1380

原创 《C++ Template. The Complete Guide》笔记之一 缘起

从面对《Modern C++ Design》中backEnds.template的用法一无所知开始,要彻底搞清楚C++的模板是如果工作的决心其实已经埋下了。更何况今天在实现B树的时候反复被模板的编译问题折磨着。更加坚定了看完这本《C++ Template. The Complete Guide》的信念。尽管过去对这个主题知道一些东西,什么特化,偏特化,参数演绎等等。但是系统地看一看也是有必要的。当

2009-02-16 17:13:00 1930

原创 BMP (Brew Mobile Platform) 新的Brew终于诞生了

在搞了一阵不是很成功的4.x和TrigML, uiOne以后。Brew社区终于出了个新东西,这个东西叫做BMP。 就是所谓的Brew Mobile Platform。具体的信息在这里有很多。如果你在Qualcomm有个账号的话,很容易的就可以注册成为BMP的开发人员。那这个BMP到底是什么东西呢?我们下载了SDK一探究竟。这个SDK的版本是Brew MP 1.0 SDK Rev 2.2。这个S

2009-02-11 18:05:00 6006

原创 Modern C++ Design 笔记 第十一章 MultiMethods(3)收藏

开始的第一方案的查询时间达到了O(n),我们认为在类的数量比较少的时候是可行的。在进入了第二方案的时候,我们让查询速度时间缩短到了O(log(n)),如果我们要在这里更进一步的话,那就应该是O(1)了。在这里我们就继续推出这个所谓的常数时间方案。在第二方案的时候,我们需要对数时间的比较来得到答案,如果是常数时间,那必须摒弃这种比较。参照前面的思路继续往下,前面的map如果改成hashtable

2009-02-02 10:28:00 1180 2

原创 Modern C++ Design 笔记 第十一章 MultiMethods(2)

 紧接这上次没说完的来说。上回我们介绍了最基本的brute-force方案。那个安全的类型遍历匹配方案。说到在类数量比较多的时候不一定高效。很简单的可以知道原来的时间复杂度是O(n),n就是类的数量。所以估摸这转化成O(log(n))应该差不多了。所以这个第二方案就是用关联性的容器来替代依次遍历。我们把这个方案称之为The Logarithmic Double Dispatcher. 就像Scot

2009-02-01 14:59:00 2198

原创 Modern C++ Design 笔记 第十一章 MultiMethods(1)

如果说前面我们已经把武功练到了第十重境界的话,最后一章意味着我们马上要打开任督二脉,一夜飞升了:)基于这样的关键的时间点,我们愿意非常谨慎的把这个问题分三次慢慢的讲,讲清楚。这第一次我们将说到这个MultiMethod话题的开始和第一个解决方案。这个MultiMethod的问题源自于C++不支持多参数的函数多态,(其实原先我不觉得我们有这么多这样类型的需求,但是当看到不知道起什么名字的时候我相

2009-02-01 13:36:00 1699

原创 Modern C++ Design 笔记 第十章 Visitor

从开始学习设计模式的时候,就有一个概念,visitor是一个鸡肋模式.由于visitor模式对于类结构稳定性的要求非常高,所以其实自己感觉在现实生活中的运用很少.(在现实中一般总可以,或者总趋向于添加一个虚函数接口了事).当然visitor不止现在这个问题,另一个突出的问题就是循环依赖.这对于C++来说,或者说对于OO来说都是一个尴尬的问题,在>中也提及了"第22条 尽量减少定义性依赖。避免循

2009-01-31 00:26:00 1460

原创 Binary Index Tree And Segment Tree for PKU #3378 Crazy Thairs

Crazy ThairsTime Limit: 3000MSMemory Limit: 65536KTotal Submissions: 3111Accepted: 699DescriptionThese days, Sempr is crazed on one problem named Crazy Thair. G

2009-01-18 23:55:00 1593

原创 Modern C++ Design 笔记 第九章 Abstract Factory

再没有读这章的时候就在想,上一章是factory那这章是不是就是Abstract Factory了。果不其然啊!一样的,在开始描述之前,援引wikipedia的定义来看看:A software design pattern, the Abstract Factory Pattern provides a way to encapsulate a group of individual factor

2009-01-14 10:35:00 1718

原创 Modern C++ Design 笔记 第八章 Object Factories

在前面一章的描述中说实话有点浅尝辄止,淡淡的扯了前面几节就黔驴技穷了,当然也不想再狗尾续貂了,所以很高兴开始了新的一章的征程 Object Factories。说起这章,我们得先说说Factory模式, 这个模式的起源在于我们有太多的类似ConcreteClass* p = new ConcreteClass 的申明,而这些静态的申请在这里限定了p的类型, 我们的想法就是如果可以不显示把p

2009-01-12 23:41:00 1407

原创 Modern C++ Design 笔记 第七章 Smart Pointers

还是不错的一章。尽管看了也用过了挺多的Smart Poniter了,但是看到这章还是引发了很多的遐想。首先第一点,并非所有的只能指针都需要重载->和*这两个操作符,甚至要禁止这样的操作符,道理很简单。像操作系统中的这些Handle,这些东西本身就是访问系统资源的一个标记。并没有什么实际的成员函数,所以对他们而言,这样的* ->没有什么意义的。而如果要控制这些的访问级别,无疑反复提到的policy模

2009-01-06 15:08:00 1679 1

原创 红黑树的C++实现

在实现之前网上浏览了一下,看到很多人都有自己的实现.主要的实现方式都是受了Introduction to Algorithm的影响.代码的结构和书中给出的伪码如出一辙,但是问题大都是1,没有深刻的理解FixUp和到底哪个节点需要. 2,忽略了Sentinel也就是哨兵节点的存在的意义.C/C++实现中的NULL在指代上还是出现了一点偏差.这里我们比较关心插入和删除操作(查询和普通的BST没有差别,

2009-01-04 23:05:00 2184

转载 Why do my text files suddenly have an additional at the end of each line?

The reason for this is CVS committing DOS-style text files (i.e. with line endings) as UNIX-style text files (with line endings). There are many ways how this can happen, so first some general rules:Y

2008-12-09 15:47:00 825

原创 Modern C++ Design 笔记 第六章 Implementing Singletons(1)

#include using namespace std; /* Place holder for thread synchronization mutex */class Mutex{   /* placeholder for code to create, use, and free a mutex */}; /* Place holder for thread synchronization

2008-12-09 11:42:00 1232

原创 Modern C++ Design 笔记 第六章 Implementing Singletons(2)

说来惭愧,大学没有好好学,第一次听到这个所谓Singleton的时候是在一个校园招聘会上。大致的题目就是要写一个Singleton,答案么大概也可以预计,就是什么都不知道, 呵呵。时过境迁,也写过了一些这样的东西,现在回过头来,还有很有意义的。不搞的特别另类,还是循着书中介绍的顺序来看看吧。// Header file Singleton.hclass Singleton{public:     

2008-12-08 13:51:00 1348

原创 AVL树的实现

在做排序汇总的时候顺带做了一下AVL树的实现,毕竟这个实现了之后的也可以用作排序的用处(中序遍历)。下面就简单的说说这个实现。其实AVL树较之不平衡的二叉查找树的区别或者说困难就在于插入和删除的操作,这里需要的平衡化过程相对比较复杂。首先,我们先来看看一些图例来理解一下旋转,这是一个简单的右旋。注意这一类的图中的Pivot都是旋转的枢纽。简单的说, 假定我们这里的ABCD都是空,那当我们插入2这个

2008-12-04 12:47:00 4886

原创 Modern C++ Design 笔记 第五章 Generalized Functors

    说到Funtor呢,应该是STL中比较普遍使用的一个东西。大致的意思就是把一个类对象像函数一样的使用,当然这个类需要重载()操作符。因为他比较像函数,所以得了一个Funtor的名字,至于翻译好像主流的叫函数子??有点搞不清状况。还是看一个最简单的Funtor的例子吧// test functor classtemplateclass T> class plus{

2008-12-03 14:11:00 1615

原创 Modern C++ Design 笔记 第四章 Small-Object Allocation

在频繁的new/delete的时候容易衍生memory fragment, 我想设计这个Allocator的初衷就在这里。初看到这个题目的时候不由的让人联想到的东西是std::allocator.  所以我们就从MS的STL中看看std::allocator的实现。templateclass _Ty> inline    _Ty _FARQ *_Allocate(_SIZT _Coun

2008-11-24 14:56:00 2439

原创 Carbide 联机调试惨痛经历

 需要联机调试一点东西,尽管以为这样的流程已经非常熟悉了,但是今天不知道怎么回事就是不罩,怒啊!开始的时候用的是N95,非常好的一个机器(少见的比较快的Nokia机器:))。但是开了TRK,设置了USB连接,也找到了合适的端口号,但是在Carbide里面显示的是USBSER001???注意不是USBSER000而是001,怎么试都是不行。试图去解决这个问题,首先是想用bluetooth

2008-11-20 10:48:00 3675

原创 Windows Mobile Form Automatic Scrollbar

 从.Net Compact Framework 2.0开始, Form里面有一个bool类型的新的property, 用来制定是否在控件超出客户区的时候需要Form自动添加一个scroll来做滚动。但是最近碰到的是如果在.net cf 1.1里面使用这个vScrollbar。还是和亿万次犯错误一样,每次都觉得这样的小问题不会是问题,但是实际上就问题来了(看起来每次工作的时候一定要战战兢兢,如

2008-11-20 10:33:00 1136

原创 处理Camera的时候需要了解的东东

用videoCapture和IAMStreamConfig拿到的支持的格式列表。发现支持2中图像格式,YV12和NV12。具体是怎么样的内存分布不知道。查了些文档。自己修改了几个图。看出了点端倪YV12先看看 http://www.fourcc.org/yuv.php 上比较标准的定义:YV12 This is the format of choice for many software MPEG

2008-11-20 10:27:00 2861 4

原创 Windows Mobile 里面调用MMS的问题

MMS一直是第三方的产品,微软并没有官方的调用方式,所以这个问题一直困扰我这个需要调用了人, 昨天做了些调研。 现在汇总一下, 看看是不是管用。最初的想法是调用tmail, 加入命令行参数。试了一下string sms = "-transport /"SMS/" -to /"13918834065/" -body /"simple SMS body/"";CreateProcess("tmail.

2008-11-20 10:26:00 2032 2

原创 Modern C++ Design 笔记 第三章 3. TypeList

 套用一个现在很流行的句式,(好多什么编程之美或者代码之美的)。我想看了第三章Modern C++ Design能感受的就是递归之美。而其中主要介绍的TypeList就是这样一个递归演绎的完美的例子。其实TypeList本身的定义非常简单。就是一个有Head有Tail的一个简单的空的定义template struct Typelist { typedef T Head; typ

2008-11-20 10:23:00 2458

原创 Modern C++ Design 笔记 第二章 Chapter 2. Techniques

惊艳的效果还在继续,第二章开始讲到了一些基本的传统的(但是我居然还是不知道的)技法,利用模板的编译特殊编译特性带来了些新的帮助。有印象的东西就是Compile-time assertions, 和Traits。Assert是个很奇特的东西,说实话就是在debug的时候有点用处,因为在release中如果Assert失败抛出个什么错误对话框也一点都不makesense。但是如果可以帮debu

2008-11-20 10:21:00 1786

原创 Modern C++ Design 笔记 第一章 Policy-Based Class Design

Chapter 1, Policy-Based Class Design如果说自己的知识领域是一个圆的话, 那么随着你的知识越来越多,周长也就越长。换言之,和你不明白的知识交集越大,也可以说自己越发觉得无知。这就是翻了几页这本《Modern C++Design》之后的感受。好像给自己打开了一个新的空间, 原来C++还可以这么写:)。这样的惊喜从第一张Policy-Bas

2008-11-20 10:20:00 2857

原创 一些排序算法的汇总

Normal 0 false false false MicrosoftInternetExplorer4 <!-- /* Font Definitions */ @font-face {font-family:Wingdi

2008-11-19 16:11:00 2126 1

原创 Palm Garnet OS 5.4 Setup Configuration

Palm Garnet OS development environment installation.  Extract the cw9palm file and install the code warrior v9.0 for palm.Attention: Make sure that the extract path name is not long since

2007-09-20 10:31:00 1848 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除