算法

什么是“并查集” ?

什么是“并查集”?并查集,是一种可以使用代表元来表示不相交集的数据结构,在一些只需要查询两个元素是否属于同一个集合的情况下它很有用。比如给定一个无向图,判断两个顶点是否属于同一个连通分量。在很多算法里面都会用到它,比如Kruskal最小生成树算法。

回溯法入门级讲解

说到回溯法,其实就是暴力搜索,并不是什么高效的算法,最多再剪枝一下。回溯算法能解决如下问题:(1)组合问题:N个数里面按一定规则找出k个数的集合(2)排列问题:N个数按一定规则全排列,有几种排列方式(3)切割问题:一个字符串按一定规则有几种切割方式(4)子集问题:一个N个数的集合里有多少符合条件的子集

后记

自6月提笔写这个教程,到现在已是年末了,时光如梭,读者跟着连载应该再配合一些基本的习题和搜索应该已经基本掌握数据结构了,然而,学完这些基本的数据结构还只是计算机学习海洋的一个开始,正如我开篇所说,数据结构是计算机编程,硬件,数学的三者结合体,

如何证明升幂定理?

一、定义升幂定理(LifttheExponent,常简记为LTE)根据相应乘法群的结构不同,升幂定理分为两部分,模为奇素数与模为2,简记为LTEp和LTE2。定理需要记为素数p在整数n中的个数,即恰好整除整数n,不整除整数。由于其针对模数为素数的幂的强大威力,常出现在各种结论的快速证明中。

C语言标准库中的字符串

一、字符串操作<string.h>size_tstrlen(charconst*s);注意:返回值类型size_t是无符号类型,和int进行运算或比较时需要注意;char*strcpy(char*dst,charconst*src);将src复制到dst,

浅谈分数规划

说到分数规划,其实这只是一个用来转换问题模型的一个套路,并没有固定的模板什么的,下面我们看看分数规划的形式和特性。分数规划(fractionalprogramming)的一般形式:对于解空间S、连续的实值函数a(x),b(x),满足∀x∈S,b(x)>0,

递归算法概念与实例讲解

本篇主要是围绕着递归算法的概念、实质、思想以及设计要素四个方向叙述,同时通过实例讲解,促进大家对递归算法的理解。一、算法概念递归算法是一种直接或者间接调用自身函数或者方法的算法。说简单了就是程序自身的调用。二、算法实质递归算法就是将原问题不断分解为规模缩小的子问题,然后递归调用方法来表示问题的解。

线性(顺序)查找介绍与实现

1.查找算法查找算法是指:从一些数据之中,找到一个特殊的数据的实现方法。查找算法与遍历有极高的相似性,唯一的不同就是查找算法可能并不一定会将每一个数据都进行访问,有些查找算法如二分查找等,并不需要完全访问所有的数据。查找算法适用于很多场景,最典型的应用场景就是已知次品商品的特征,

C++字符串常用操作(一)

1.基本介绍在程序设计中,字符串操作是必不可缺的,无论是工程设计还是算法设计均离不开字符串,字符串是由一个个单独的字符构成的串,其数据结构是线性的,常以ASCII码表示,同时只要设定得当,其展示任何一种编码也都是可以的。字符串有很多的操作,也有非常多的扩展算法,

状态压缩DP图文实例讲解(二)

本文是讲解状态压缩DP的第二部分,仍然是对基于连通性问题的探讨与学习。一些概念性的问题,以及基本解法在第一节中讲过,这里就不再赘述。对典例蒙德里安的梦想的分析直接看例题:求把N×M的棋盘分割成若干个1×2的长方形,有多少种方案。例如当N=2,M=4时,共有5种方案。