摘要:
counter = 0while counter < 3: print(counter) counter += 1 print(counter) 阅读全文
摘要:
if 2 < 1: print("if")else: print("else") if 2 < 1: print("if")elif 2 == 1: print("elif")else: print("else") 阅读全文
摘要:
http://www.cr173.com/html/7367_1.html 阅读全文
摘要:
什么是堆 如何构造堆 功能:将一段数据转换为max-heap.(父节点不小于子节点的完全二叉树。) 基本步骤: 从某一子树开始进行下溯操作。 开始的子树:Distance parent = (len - 2)/2; 最后的叶节点不必执行下溯。 该子树执行完下溯后parent—; 下溯:将空洞节点(这里是parent,即开始执行下溯的节点)与较大子节点对调,并持续下放, 直到叶节点为止。... 阅读全文
摘要:
贪心算法分阶段工作,在每一阶段,可以认为所做的决定是最好的,而不考虑将来的结果。当算法终止时,我们希望局部最优就是全局最优。赫夫曼树赫夫曼树:带权路径长度最小的二叉树。路径长度:从树中的一个节点走到另一个节点所经过的分支数目。二叉树a中,根节点到节点D的路径长度为4.带权路径长度:路径长度与权乘积。二叉树a的带权路径长度5*1+15*2+40*3+30*4+10*4=315构造赫夫曼树即赫夫曼算法实例核心,每次合并两颗权值最低的的树。注意第四步选的是i和p,而不是T3和i .赫夫曼编码赫夫曼编码就是一种贪心算法,赫夫曼编码的核心是,经常出现的字符用较少的二进制位数表示。(传统的ASCII都是用 阅读全文
摘要:
http://www.cnblogs.com/zhuyp1015/archive/2012/07/25/2609129.html C++ 程序员都应该知道,只有在程序通过指向基类对象的指针或基类对象的引用调用虚函数时,才会发生运行时的多态现象。 对象的创建和复制不是运行时多态的,这一点严重影响了类的设计。所以,容器——无论是类似于数组或者结构体的内建容器还是用户自定义容器类——只能获得编译时类型一致的元素值。如果有一系列类之间存在继承关系,当我们需要创建、复制和存储对象,而这些对象的确切类型只有到运行时才能知道时,则这种编译时的检查会带来一些麻烦。 通常,解决这个问题的方法是增加一个间... 阅读全文
摘要:
若一个类不能定义对象而只能做基类派生新类,称该类为抽象类。 (1)若类的构造函数或析构函数的访问权限为protected,则此类为抽象类。因为只有在派生类中可调用基类的保护成员。(构造函数或析构函数为private的类没有实用价值。) (2)含有纯虚函数的类为抽象类。 阅读全文
摘要:
为什么要有纯虚函数 在定义基类时,有时只需要抽象出虚函数的原型,而无法定义其实现,因为其实现依赖于它的派生类。这是,可以把基类中的虚函数定义为纯虚函数。 格式:virtual <return type> FuncName(<ArgList>) = 0; 说明: (1)定义纯虚函数时,其实现不能在类内定义,但可在类外或派生类中定义,通常在派生类中定义。 (2)虚函数名赋值为0,与函数体为空不同,在未实现该函数之前,不能调用它(函数体为空的函数可以被调用)。 (3)含有纯虚函数的类是抽象类,因为虚函数没有实现部分,不能产生对象。 (4)可以定义抽象类类型的指针(或引用),以 阅读全文
摘要:
如果没有[],则对于一维数组只是释放第0个元素所占内存, 对于二维数组只是释放第0行内存。 阅读全文
摘要:
没有使用虚析构函数可能会出现的问题:#include <iostream>#include <string>using namespace std;class A {public: A() { cout << "A constructor" << endl; } ~A() { cout << "A destructor" << endl; }};class B: public A { char *buf;public: B() { buf = new char[10]; cout & 阅读全文