中国 - 喜马拉雅

       Let life be beautiful like summer flowers . . .
摘要: 1. 求最大的子数组的和 题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。 如果不考虑时间复杂度,我们可以枚举出所有子数组并求... 阅读全文
posted @ 2012-10-10 17:25 chinaxmly 阅读(8332) 评论(4) 推荐(1) 编辑
摘要: 高效生成随机数组算法在实际的程序开发中也大量的进行使用。例如在棋牌类的游戏开发中的斗地主、双扣等,在每次游戏开始时,都需要打乱扑克牌的顺序,然后再将打乱以后的扑克牌依次发放给每个游戏玩家。而这种打乱扑克牌顺序的算法通常就被称作洗牌算法。 从程序开发的角度看洗牌算法,实际上生成的就是一组规则的随机数字,例如对于一副扑克牌来说,在程序中如果需要代表一副扑克牌,根据扑克牌的特点(每幅牌包含54张不同的... 阅读全文
posted @ 2012-10-10 16:25 chinaxmly 阅读(1781) 评论(0) 推荐(0) 编辑
摘要: 首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。 1. rand(产生随机数) 表头文件:#include<stdlib.h> 定义函数:int rand(void) 函数说明:因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一个随机数值,... 阅读全文
posted @ 2012-10-10 11:46 chinaxmly 阅读(529) 评论(0) 推荐(0) 编辑
摘要: 1. 单件模式 单件模式是允许一个类有且仅有一个实例的方法。 2. 命令模式 命令模式将每个命令,也就是函数封装为“函数对象”,以便将其以参数的形式传递给其他函数或对象,告诉它们要执行特定的操作。命令模式中所有的“命令”都会被执行。 3. 代理模式 代理模式强调的是“代理”,它只有一个实现类,代理类控制对其实现类的访问。 4. 状态模式 状态模式虽然也有“代理”,但它可以有多个实现类... 阅读全文
posted @ 2012-10-07 16:18 chinaxmly 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 用访问者模式进行多重派遣 访问者模式(Visitor)的目标是将继承层次结构上的操作与这个层次结构本身分开。这是一个相当古怪的动机,因为在向对象编程中所做的大部分工作是将数据和操作组合在一起形成对象,并利用多态性根据对象的确切类型自动选择操作的正确变化。 利用访问者模式将操作从类的继承层次结构中提取出来置入一个独立的外部层次结构。“主层次结构”包含一个函数visit(),该函数接受任何来自操作... 阅读全文
posted @ 2012-10-07 16:13 chinaxmly 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 观察者(Observer)模式用于解决一个相当常见的问题:当某些其它对象改变状态时,如果一组对象需要进行相应的更新,那么应该如何处理呢?这可以在“文档-视图设计模式”中见到。假定有一些数据(即“文档”)和两个视图:一个图形视图和一个文本视图。在更改“文档”数据时,必须通知这些视图更新他们自身,这就是观察者模式所要完成的任务。 // Observer.h// The Observer interf... 阅读全文
posted @ 2012-10-05 17:42 chinaxmly 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 构建器模式用于创建复杂对象。GoF指出,构建器模式和抽象工厂模式主要的区别就就是,构建器模式一步步创建对象,所以及时展开输出创建过程似乎很重要。此外“主管(BicycleTechnician)”获得一个切片的流(stream),次且将这些切片传递给构建器,每个切片用来执行创建过程中的一步。 下面有一个例子,作为模型的一辆自行车按照其类型(山地车、旅行车或赛车)来选择零部件组装一辆自行车。一个构建... 阅读全文
posted @ 2012-10-02 21:12 chinaxmly 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 使用工厂方法模式的主要目标之一就是更好地组织代码,使得在创建对象时不需要选择准确的构造函数类型。也就是说,可以告诉工厂:“现在还不能确切地知道需要什么类型的对象,但是这里有一些信息。请创建类型适当的对象。” 此外,在构造函数调用期间,虚拟机制并不起作用(发生早期绑定)。在某些情况下这是很棘手的事情。例如,在Shape程序中,在Shape对象的构造函数内部建立一既需要的东西然后由draw()给制S... 阅读全文
posted @ 2012-10-02 15:08 chinaxmly 阅读(767) 评论(0) 推荐(0) 编辑
摘要: 抽像工厂(Abstract Factory)模式看起来和前面看到的工厂方法很相似,只是他使用若干工厂方法(Factory Method)模式。每个工厂方法模式创建一个不同类型的对象。当创建一个工厂对象时,要决定将如何使用由那个工厂创建的所有对象。 假设要创建一个通用的游戏环境,并且希望它能支持不同类型的游戏。请看以下程序是如何使用抽象工厂模式的: #include <iostream>usin... 阅读全文
posted @ 2012-10-02 10:20 chinaxmly 阅读(273) 评论(2) 推荐(0) 编辑
摘要: 在工厂模式的例子中,静态成员函数static factory()迫使所有创建对象的操作都集中在一个地方,因此这个地方就是唯一需要修改代码的地方。然而,GoF强调工厂方法模式的理由是,可以使不同类型的工厂派生自基本类型的工厂。工厂方法模式事实上是多态工厂模式的一个特例。 #include <iostream>#include <map>#include <string>#include <vect... 阅读全文
posted @ 2012-10-01 18:42 chinaxmly 阅读(1230) 评论(0) 推荐(0) 编辑