摘要: 1. 模板类不支持分离编译。在VS2015中,若将模板类分离编译,会报LNK2019的错误。原因是模板函数的代码不能直接编译成二进制代码,其中要有一个“具体实现化”的过程。“具体实现化”的过程采取“即用即编译”的原则。在类模板cpp和h文件中没有调用相关的函数,因此没有生成实例化的代码,在main文 阅读全文
posted @ 2018-04-26 20:02 Jelly08 阅读(129) 评论(0) 推荐(0)
摘要: 当工程中只有一个源文件时,可以直接使用gcc命令来编译,但若有多个源文件并且引用了外包时,包与包之间可能还存在各种依赖,使用gcc编译则会显得非常复杂混乱。在这种情况下,make则可以让整个过程变得简洁高效。make命令本身是没有编译、链接的功能,而是通过调用用户在Makefile中的命令来执行编译 阅读全文
posted @ 2018-03-29 14:31 Jelly08 阅读(802) 评论(0) 推荐(1)
摘要: 要查看目标代码(.o文件),最常用的使用反汇编器。在Linux中是命令objdump -d file.o可以调用程序OBJDUMP充当这个角色。但是它产生的类似汇编代码格式的文本和由gcc生产的汇编代码的字节序列有细微差别,比如前者省略了表示大小的后缀。 数据格式 Intel通常用”字“来表示16位 阅读全文
posted @ 2018-01-18 15:46 Jelly08 阅读(414) 评论(0) 推荐(0)
摘要: 给定一个二分图G(V,E),V为顶点集,E为边集,在G的一个子图M中,M的边集E中的任意两条边都不依附于同一个顶点,则称M是一个匹配。 极大匹配(Maximal Matching)是指在当前已完成的匹配下,无法再通过增加未完成匹配的边的方式来增加匹配的边数。最大匹配(maximum matching 阅读全文
posted @ 2018-01-02 20:46 Jelly08 阅读(225) 评论(0) 推荐(0)
摘要: 01背包(ZeroOnePack): 有N件物品和一个容量为V的背包,每种物品均只有一件,第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使价值总和最大。 完全背包(CompletePack): 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的重量是w[i], 阅读全文
posted @ 2018-01-01 14:11 Jelly08 阅读(94) 评论(0) 推荐(0)
摘要: trie经常用来存储大量的字符串,以供以后的快速查找。这里主要介绍01字典树,专门来存储大量的整数。除根节点外,所有的其他节点都存储0或者1。因此,从根节点到叶子节点的路径就是一个完整的二进制整数。在代码上,我们通常使用一个二维数组来表示这个数据结构,trie[MAXN][2]。用trie[i]表示 阅读全文
posted @ 2017-12-31 23:19 Jelly08 阅读(193) 评论(0) 推荐(0)
摘要: 线段树是经常使用完全二叉树来实现,也就是使用一个数组来表示(0号元素通常不做使用)。线段树的叶子节点存储的是实际的数据,而非叶子节点存储的是该节点对应区间的信息(比如该区间的最值,求和等)。举例说明,假如非叶子节点存储区间的最小值,数据为[2,5,1,4,9,3],则可以构造出的线段树如下: 更一步 阅读全文
posted @ 2017-12-31 23:11 Jelly08 阅读(110) 评论(0) 推荐(0)
摘要: 这里总结了Leetcode中两道关于DFS的题 1. Combination Sum:https://leetcode.com/problems/combination-sum/#/description 按照例题的数据,假设给定的集合为{2,3,6,7},目标值是7。直观来看,它的搜索空间是一棵树 阅读全文
posted @ 2017-12-31 23:03 Jelly08 阅读(129) 评论(0) 推荐(0)
摘要: 题目:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时,所有的石子堆都已经被拿空了,则判负。 首先介绍xor运算。xor满足交换律,结合律,消去律,并且与自己本身互为逆运算。根据这个性质可以将swap函数写为 void swap(int 阅读全文
posted @ 2017-12-31 22:57 Jelly08 阅读(291) 评论(0) 推荐(0)