06 2015 档案
摘要:例子"abmadsefadd" 最长长度为7"avoaid" 最长长度为3思路空间换时间hashTable,起始位置设为beg。初始化全局最大值0。开辟字符数组,起初标为0。访问数组时如果该字符在hashTable对应的哈希值为1,则计算当前位置到beg的距离,并且把beg赋值为beg+1...
阅读全文
摘要:定义结点struct MGraph{ int vexs[MAXVEX]; //顶点数组 int arc[MAXVEX][MAXVEX]; //邻接矩阵 int numVertex, numEdges; //定点数 边数};深度优先遍历图示 参考代码bool vis...
阅读全文
摘要:问题判断一棵树是否是另一棵树的子树,如图思路问题分两步:找值相同的根结点(遍历解决)判断两结点是否包含(递归:值、左孩子、右孩子分别相同)树节点定义struct TreeNode{ int val; TreeNode *next; TreeNode(int v) : val(v),...
阅读全文
摘要:行文脉络解法一——除法解法二——移位解法三——高效移位解法四——查表扩展问题——异或后转化为该问题对于一个字节(8bit)的变量,求其二进制“1”的个数。例如6(二进制0000 0110)“1”的个数为2,要求算法效率尽量高。解法一对于二进制数来说,除一个2,就少一位,可以判断这个少的位来确定“1”...
阅读全文
摘要:去掉K位求取最小数 一个n位的数,去掉其中的k位,怎样使留下来的(n-k)位数按原来的前后顺序组成的数最小例如8314925去掉4个数,留下125最小,注意有前后顺序要求,要是没有顺序当然是123。解决方案贪心算法,在每次被访问的位置保证有最优解。思路一分析:求一共n位,求其中的m位组成的数最小。...
阅读全文
摘要:顺序打印矩阵思路参考代码#include using namespace std;void printNumAsClockwise(int a[][4], int row, int col){ if (row = left; --i) cout = up; --i) ...
阅读全文
摘要:虚函数#include #include using namespace std;class Base{ public: virtual void print_val() { cout print_val(); yb.print_val(...
阅读全文
摘要:1、算法简述简单地说:全排列就是从第一个数字起每个数分别与它后面的数字交换。E.g:E = (a , b , c),则 prem(E)= a.perm(b,c)+ b.perm(a,c)+ c.perm(a,b)然后a.perm(b,c)= ab.perm(c)+ ac.perm(b)= abc +...
阅读全文
摘要:动态规划--矩阵链乘法1、矩阵乘法 Note:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×r的矩阵A左乘一个r×n的矩阵B,会得到一个m×n的矩阵C。#include using namespace std;#define A_ROWS 3#define A_CO...
阅读全文
摘要:set用法 一、set和multiset基础 set和multiset会根据特定的排序准则,自动将元素进行排序。不同的是后者允许元素重复而前者不允许。 需要包含头文件: 二、创建元素 三、插入元素 例如: 结果: 四、删除元素 结果: 五、查找元素 例如: 结果: 六、其他 上述程序最后新产生一个s
阅读全文
摘要:List介绍 Lists将元素按顺序储存在链表中。与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。 实例一: 结果: 实例二: 结果:
阅读全文
摘要:一、什么是最长公共子序列 什么是最长公共子序列呢?举个简单的例子吧,一个数列S,若分别是两个或多个已知序列的子序列,且是所有符合条件序列中最长的,则S称为已知序列的最长公共子序列。 举例如下,如:有两个随机数列,1 2 3 4 5 6 和 3 4 5 8 9,则它们的最长公共子序列便是:3 4...
阅读全文
摘要:最小生成树之Kruskal算法和Prim算法 Kruskal多用于稀疏图,prim多用于稠密图。 根据图的深度优先遍历和广度优先遍历,可以用最少的边连接所有的顶点,而且不会形成回路。这种连接所有顶点并且路径唯一的树型结构称为生成树或扩展树。实际中,希望产生的生成树的所有边的权值和最小,称之为最...
阅读全文
摘要:map容器 一、map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 二、map的功能 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。 根据
阅读全文
摘要:vector向量 vector是一种对象实体,能够容纳许多其他类型相同的元素,因为又被称为容器。 头文件 在使用它时,需要包含头文件 <vector>。 vector属于std命名域的,因此需要通过命名限定: 基本操作 函数 表述 c.assign(beg,end) c.assign(n,elem)
阅读全文
摘要:1、中心扩展中心扩展就是把给定的字符串的每一个字母当做中心,向两边扩展,这样来找最长的子回文串。算法复杂度为O(N^2)。但是要考虑两种情况:1、像aba,这样长度为奇数。2、想abba,这样长度为偶数。代码如下:string findLongestPalindrome(string &s){ ...
阅读全文
摘要:一般的线性筛法genPrime和genPrime2是筛法求素数的两种实现,一个思路,表示方法不同而已。#include #include #includeusing namespace std; const int MAXV = 100; //素数表范围 bool flag[MAXV+1];...
阅读全文
摘要:const关键字总结 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性。const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 C++中的const关键字的用法非常灵活,而使用const将大大改善程
阅读全文
摘要:友元函数 友元函数的目的 1、为什么要引入友元函数? 在实现类之间数据共享时,减少系统开销,提高效率。 友元函数的目的 1、为什么要引入友元函数? 在实现类之间数据共享时,减少系统开销,提高效率。 具体来说:为了使其他类的成员函数直接访问该类的私有变量,即:允许外面的类或函数去访问类的私有变量和保护
阅读全文
摘要:static关键字总结 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 一、面向过程设计中的static 1)静态全局变量 在全局变量前,加上关键字static,该变量就被
阅读全文
摘要:父类与子类间的继承关系 一、父类与子类 父类与子类的相互转换 1、派生类的对象可以赋给基类,反之不行 2、基类的指针可以指向派生类,反之不行 3、基类的引用可以初始化为派生类的对象,反之不行 4、派生类指针必须强制转换为基类指针后才可以指向基类 5、基类指针转换为派生类指针容易导致崩溃性错误 6、虚
阅读全文
摘要:操作符重载 一、什么是操作符重载 操作符重载可以分为两部分:“操作符”和“重载”。重载是一种编译时多态,重载实际上可以分为函数重载和操作符重载。运算符重载和函数重载的不同之处在于操作符重载重载的一定是操作符。 操作符“+”完成float和int两种类型的加法计算,这就是操作符重载了。这些内置类型的操
阅读全文
摘要:模板 模板的概念 模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。 为求两个数的最大值,定义MAX()函数,需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1...
阅读全文
摘要:基本使用方法 一、输入 二、复制 三、连接 四、比较 五、倒置串 六、查找串 七、替换和字串 八、修改字符串 九、获取字符串状态 十、string中的所有s1都替换成s2
阅读全文
摘要:一、复制构造函数的介绍 在一般的数据类型中, 我们经常会用一个变量来初始化另一个变量, 例如: int a = 10; int b = a; 使用a变量来初始化b变量, 同样, 对于类创建的对象也可以用这种方式使用一个对象去初始化另一个对象。例如还在上篇中介绍的 Po...
阅读全文
摘要:一、构造函数的介绍 1. 构造函数的作用 构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建对象时, 对象会自动调用它的构造函数。一般来说, 构造函数有以下三个方面的作用: ■ 给创建的对象建立一个标识符; ■ 为对象数据成员开辟内存空间; ■ 完成对象数据成员的初始化。 2.
阅读全文
摘要:库的分类根据链接时期的不同,库分为静态库和动态库之分。静态库:在链接阶段被链接的,生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行。动态库:在程序执行的时候被链接的,即使程序编译完,库仍须保留在系统上,以供程序运行时调用。动态链接库一、隐式调用 --> 创建动态链接库#i...
阅读全文
摘要:queue单向队列 queue 模板类的定义在<queue>头文件中。与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。 定义queue 对象的示例代码: queue 的基本操作有: 使用范例:
阅读全文
摘要:stack栈 c++stack(堆栈)是一个容器的改编,它实现了一个先进后出的数据结构(FILO),使用该容器时需要包含#include<stack>头文件; 定义stack对象示例: stack的基本操作: stack的使用范例:
阅读全文
摘要:deque简介 deque是双向开口的连续性存储空间。虽说是连续性存储空间,但这种连续性只是表面上的,实际上它的内存是动态分配的,它在堆上分配了一块一块的动态储存区,每一块动态存储去本身是连续的,deque自身的机制把这一块一块的存储区虚拟地连在一起。 它首次插入一个元素,默认会动态分配512字节空
阅读全文
摘要:动态规划 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 什么是动态规划? 动态规划算法通常基于一个递推公式及一个或多个初始状态。当前子问题的解将由上一次子问题的解推出。使用动态规划来解题只需要多项式时间复杂度,因此它比回溯法、暴力法等
阅读全文
摘要:返回值分析 函数不能通过返回指向栈内存的指针,返回指向堆内存的指针是可以的。 一、返回局部变量的值 可以有两种情况:返回局部自动变量和局部静态变量,比如: int func() { int temp = 0; // 返回局部自动变量的值,没问题 return temp; } 局部变量temp存储在栈
阅读全文
摘要:变量、常量与运算符 一、什么是变量? 在计算机的内存中, 内存被划分为一个一个的内存单元, 每个内存单元有自己的编号, 而变量就是对某一段连续内存单元使用一些更容易记忆、更容易区分的字符组合为其建立一个新的名称。 1)变量名命名规则: 1)由字母(a-z, A-Z)、数字(0-9)或下划线(_)组成
阅读全文

浙公网安备 33010602011771号