05 2011 档案

面相对象的topSort和递推【ural1022/ural1017】
摘要:面向对象是个好东西,他可以使责任分立,于是我尝试着在ural1022里面使用了这个思想来实现拓扑排序,很幸运的一次AC。以节点为对象,他的责任有:1 操作自身划入另一个集合2 操作子节点入度减一3 通知入度为0的子节点执行上述两个操作面向对象的好处除了责任分立之外,还有数据的独立。节点对象存储了自身入度,出度,孩子节点等信息。不得不说在思路上比面向过程的要清晰,易书写也易维护。ural1017好多人说是DP,我却用递推把他解了出来。。说实话,DP和递推的界限不是很明显,我甚至觉得DP是用递推实现的记忆化搜索。网上的DP是O(n^2)的时间复杂度。递推是O(n^3)。递推式为:f[i,j] = 阅读全文

posted @ 2011-05-28 17:37 dk647 阅读(243) 评论(0) 推荐(0)

《inside the cpp object model》 阶段性阅读总结(4)
摘要:第四章 函数的语义章前阅读c++支持,静态,非静态函数成员,虚函数,不同的函数调用,会产生不同的效果。第一节 不同种类的成员调用非静态成员函数。在挑选函数实例的时候,是没有花费的,这个是通过内部的转换,将成员函数变为非成员函数而实现的。包括以下三步:参数表中添加this指针,函数体内成员变量增加this指针,重写函数为外部函数并进行名字分解。名字分解。成员函数的名字被改为唯一的名字,通过整合类名和成员名(与类名结合,我们就可以在子类里访问父类的同名成员了)。分解的模式未知,是和编译器相关的。虚成员函数。虚函数的调用,会被转义为形如( * ptr->vptr[index ])( ptr ) 阅读全文

posted @ 2011-05-23 16:43 dk647 阅读(1127) 评论(0) 推荐(1)

《inside the cpp object model》 阶段性阅读总结(3)
摘要:第三章 数据的语义章前阅读提到两点:编译器系统会添加一些数据成员去支持一些语言功能。Alignment requirements on the data members and data structures as a whole(不知道怎么翻译,大概意思就是数据成员对齐的需要)第一节、绑定数据成员主要是全局的对象和类嵌套对象的绑定问题首先是对象绑定,假如在一个内联函数里返回一个变量,如果全局定义了同名变量,并且在该函数的后面也定义了同名变量,那么较早一些的编译器会错误的返回全局变量。早期解决该问题的办法是使用安全的书写方式(把嵌套变量放到类的首部,或把内联函数的函数体写到类外)。现在的编译器 阅读全文

posted @ 2011-05-03 21:38 dk647 阅读(641) 评论(0) 推荐(0)