
算法笔记系列
文章平均质量分 78
锐不可当cr
持续努力 保持激情 勿忘初心
展开
-
算法笔记:数学问题+数论初步一(未完待续)
数学问题+数论初步一一、辗转相除法(欧几里得算法)1. 求两个数的gcd和lcm法一:非递归解法#include void Swap(int *a,int *b){ int t; t=*a; *a=*b; *b=t;}int getGcd(int a,int b) //求a和b的最大公约数 { int m; if(a=b Swap(&a,&b原创 2017-07-23 10:16:02 · 505 阅读 · 1 评论 -
算法笔记:分治法
算法笔记:分治法一、相关概念1. 分治:分而治之,即将较大规模的问题分解成几个较小规模的问题,通过对较小规模问题的求解达到对整个问题的求解。 当我们将问题分解成两个较小问题求解时的分治方法称之为二分法。2. 基本思想(基本策略) (1)分——分解(Divide):将一个规模为n的问题划分为k个规模更小的子问题; (2)治——解决原创 2018-01-25 19:55:49 · 652 阅读 · 0 评论 -
算法笔记:DFS(基础)
专题:DFS(基础)一、基础知识1. 引入搜索与回溯是计算机解题中常用的算法,很多问题无法根据某种确定的计算法则来求解,可以利用搜索与回溯的技术求解。回溯是搜索算法中的一种控制策略。2. 基本思想(1)为了求得问题的解,先选择某一种可能情况向前探索;(2)在探索过程中,一旦发现原来的选择是错误的,就退回一步重新选择,继续向前探索;(3)如此反复进行,直至得到解或证明原创 2018-01-18 17:10:21 · 3660 阅读 · 5 评论 -
算法笔记:贪心法(未完待续)
算法笔记:贪心法一、概念1. 贪心法(Greedy Algorithm)定义 求解最优化问题的算法通常需要经过一系列的步骤,在每个步骤都面临多种选择; 贪心法就是这样的算法:它在每个决策点作出在当时看来最佳的选择,即总是遵循某种规则,做出局部最优的选择,以推导出全局最优解(局部最优解->全局最优解)2. 对贪心法的深入理解 (1原创 2017-07-27 10:47:12 · 2362 阅读 · 2 评论 -
算法笔记:动态规划(DP)初步
专题:动态规划(DP)初步内容来源:《挑战程序设计竞赛》(第2版)+《算法竞赛入门经典》(第2版)+网上资料整理汇总一、引入 动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。不像前面所述的那些搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件原创 2017-09-11 17:03:59 · 17867 阅读 · 1 评论 -
算法笔记:C++ STL(Standard Template Library)二(未完待续)
算法笔记:C++ STL(二)内容来源:刘汝佳《算法竞赛入门经典(第2版)》一、基础知识1. 排序与检索内容略,注意待排序/查找的元素可以放在数组里,也可以放在vector里。2. 不定长数组Vector(1) vector是一个模板类,声明:vector不定长数组名 ---- 相当于一维数组 vect原创 2017-08-31 17:09:29 · 295 阅读 · 0 评论 -
算法笔记:C++ STL(Standard Template Library)
算法笔记:STL一、排序1. 对基本类型数组递增排序:sort(数组名+n1, 数组名+n2); 排序区间 [n1, n2) 这里n1, n2均为大于等于0的整数,若n1=0,可省略不写(下同)例1:#include #include using namespace std; int main(){ int i,len; int a[]={15,4,原创 2017-07-25 11:23:02 · 541 阅读 · 0 评论 -
算法笔记:树和二叉树基础
专题:树和二叉树基础内容来源:《算法竞赛入门经典》(第2版)+网上资料整理汇总一、引入1. 树是一种非线性的数据结构,用它能很好地描述有分支和层次特性的数据集合。树型结构在现实世界中广泛存在,如社会组织机构的组织关系图就可以用树型结构来表示。树在计算机领域中也有广泛应用,如在编译系统中,用树表示源程序的语法结构。在数据库系统中,树型结构是数据库层次模型的基础,也是各种索引和目录的主要组原创 2017-09-05 14:30:48 · 1050 阅读 · 0 评论 -
算法笔记:动态规划背包问题(未完待续)
专题:DP背包问题内容来源:《挑战程序设计竞赛》(第2版)+《算法竞赛入门经典》(第2版)+网上资料整理汇总一、0-1背包1. 有n个重量和价值分别为wi, vi的物品。从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值。(1样例输入:42 31 23 42 25 42 13 34 57 910原创 2017-09-13 18:33:27 · 787 阅读 · 0 评论 -
算法笔记:数组和字符串
算法笔记:函数和字符串内容来源:刘汝佳《算法竞赛入门经典(第2版)》一、数组与字符数组1. 一维/二维数组声明与使用方法(基础)※注意两个函数:memcpy和memset(1)memcpy(b, a,sizeof(type)*k):将数组a的前k个元素复制到数组b(type为数组类型,a数组与b数组的类型需相同)(2)memset(a,value, sizeof(a原创 2017-08-21 16:15:56 · 723 阅读 · 0 评论 -
算法笔记:并查集
专题:并查集一、引入 在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪哪个集合中。 该问题看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往超过了空间的限制,计算机无法承受;而且复杂度较高,实现过程较复杂。因此,只能采用一种特殊数据结构—原创 2017-09-03 14:41:23 · 848 阅读 · 0 评论 -
算法笔记:二叉搜索树BST
专题:二叉搜索树BST一、定义 二叉搜索树(Binary Search Tree),也称有序二叉树或排序二叉树,是指一棵空树或者具有下列性质的二叉树: 1. 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 2. 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值; 3. 任意节点的左、右子树也分别为二叉搜...原创 2017-09-06 15:59:11 · 550 阅读 · 0 评论