动态规划选讲1
简介 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学…
简介 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学…
埃拉托斯特尼筛法(sieve of Eratosthenes ) 是古希腊数学家埃拉托斯特尼发明的计算素数的方法。对于求解…
简介 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整…
二分查找又称折半查找,它是一种效率较高的查找方法。 原理:将数组分为三部分,依次是中值(所谓的中值就…
来自LeetCode 368 描述 给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (S…
定义 将一个复杂的对象,分成多分,使同样的构建过程,能有不同的表示,这样的设计模式被称为建造者模式。…
单例模式,又称单件模式。 定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。它…
三路快排是快速排序算法的升级版,用来处理有大量重复数据的数组。 主要思想是选取一个key,小于key的丢到…
函数原型 int sscanf( string str, string fmt, mixed var1, mixed var2 … ); int scanf( const char *f…
Python中求集合的交集并集是十分方便了,但在C++中还是有困难的。 set里面有set_intersection(取集合交集…
并查集适用问题举例 1、已知,有n个人和m对好友关系 2、如果两个人是直接的或者间接的好友(好友的好友的…
堆的定义 堆其实就是一棵完全二叉树(若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达…
设文法G[S]=(VN,VT,P,S),则首字符集为: FIRST(α)={a | αaβ,a∈VT,α,β∈V *}。 若αε,ε∈FIRST(…
定义概览 Dijkstra算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是…
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通…
简介 1.直接左递归的消除 消除产生式中的直接左递归是比较容易的。例如假设非终结符P的规则为 P→Pα / β …