随笔分类 - C/C++
C/C++ 程序编译过程
摘要:**基础知识** 程序语言经历了:机器语言-> 汇编语言 -> 高级语言; 而对于高级语言来讲,其中又有编译型语言(C++) 与 解释型语言(python); 其中 编译型语言直接把高级语言源码编译成二进制机器码,直接运行机器玛就行 ; 解释型语言保存源程序代码文件,运行时候再有解释器一条条解释执行
阅读全文
哈弗曼编码(haffman-Coding)
摘要:**基础知识** 编码:信息的不同表示形式; 定长编码:典型的就是 ASCII 编码; 缺点:有些位数是没必要的; 变长编码:保证任意两个字符的编码都不一样,且编码的长度是不固定即可; 有效的变长编码:任意一个字符的编码,不能是其他字符编码的前缀;对于计算机来讲,有效变长编码更有意义; 因此如果把编
阅读全文
字典树(Trie) 与双数组字典树(DoubleArrayTrie)
摘要:**基础知识** 字典树(Trie): 单词查找树, 可用于单词查找,字符串排序; 在大部分的树中, 节点 代表 集合;边 代表 关系;(很重要,代码实现中很多地方都体现); 字典树的具体结构如下图,其中每一条边代表一个字符;不同节点颜色代表以该节点结尾的单词是否存在(粉色:存在;白色:不存在)。
阅读全文
经典字符串匹配算法
摘要:**基础知识** 前置知识: 母串S/文本串:被查找源字符串; 模式串T: 目标字符串; 单模匹配问题:只有一个模式串问题; 字符串匹配算法需要极强观察能力; 常见的算法: 1. 暴力匹配(brute force):保证不重不漏的进行每一次匹配,实现查找的目的;O(n * m); 2. KMP算法
阅读全文
递推与动态规划
摘要:**基础知识** 1.递推基础知识: 斐波那契(Fibonacii)数列的递推公式:F(n) = F(n -1) + F(n - 2); 70. 爬楼梯: Fibonacci 的最直接体现; 前置知识: 数学归纳法: a: 验证k0 成立; (边界条件) b: 证明如果ki 成立,那么Ki+1 也成
阅读全文
红黑树(RB Tree)
摘要:**基础知识** 红黑树的基本性质:(红黑树是弱化版的AVL 树) 1. 每个节点非黑即红; 2. 根节点是黑色; 3. 叶节点(NIL(Null-pointer to objective))是黑色的; 在示意图中没有画出来的NIL!! 在删除操作中很重要,删除操作中主要就是处理双重黑失衡; 4.
阅读全文
AVL-平衡二叉搜索树(Self-balancing binary search tree)
摘要:**基础知识** 二叉排序树(二叉搜索树):思维结构中可以是有序数组,树; 性质: 左子树 < 根节点 ; 右子树 > 根节点; 中序遍历结果:就是递增排序的有序序列;(3,17, 20, 28, 28, 29, 30, 32) 操作: 增(插入): 与根结点比较:小于:进入左子树;大于:进入右子树
阅读全文
C/C++ 宏定义
摘要:**基础知识** 关键字 : #define / #undef / #ifdef / #ifndef //注意与typedef / inline之间差别; #define 标识符 替换列表(替换列表可以是数,字符串字面量,标点符号,运算符,标识符,关键字,字符常量。注意:替换列表是可以为空的) 是预
阅读全文