算法

树形DP概念和实例讲解

一、什么是树型动态规划顾名思义,树型动态规划就是在“树”的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既向前和向后,相应的线性的动态规划有二种方法既顺推与逆推,而树型动态规划是建立在树上的,所以也相应的有二个方向:(1)叶->根:在回溯的时候从叶子节点往

三维计算几何基础

本篇内容是围绕着三维计算几何展开,三维几何的很多概念和知识与二维几何是想通的,所以在我们做三维几何问题的时候,可以采用解决二维几何问题相同的方法来解决。其中点,向量,直线等概念和二维几何相似,就不再重复介绍了。平面我们可以用平面上的一点和该平面的法向量(即垂直于该平面的向量)n来表示一个平面。

邻接表的定义及C/C++代码实现

1.邻接表概念邻接表(AdjacencyList)顾名思义,就是通过链表或者利用数组模拟链表的方式将图的相连接关系表示的一种方法,存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。

基数排序算法C/C++代码图文讲解

基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。(1)什么是基数排序?1.通过键值得各个位的值,

C++STL教程入门

在上一篇文章我们已经基本的了解了什么是C++的STL(标准模板库),在本章中绝大多数内容都是在介绍常用的STL模板的使用以及其一些参数的介绍,但是请注意,STL由于其设计之初就容纳了大量的程序员思维结晶,经过了无数次的讨论才形成了一个统一的标准,

C++STL之Priority_queue(优先队列)

1.简介优先队列是一种极其特殊的队列,他与标准的队列使用线性结构进行计算不同,优先队列的底层是以散列的状态(非线性)表现的,他与标准的队列有如下的区别,标准的队列遵从严格的先进先出,优先队列并不遵从标准的先进先出,而是对每一个数据赋予一个权值,

高精度计算的应用

什么是高精度算法?它是处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数。但近几年的CSPJ/S复赛貌似从未单独考过高精度算法,但有时会和其他算法一起考。

什么是拓扑排序?

拓扑排序主要解决的问题是给一个图的所有节点排序。一、什么是拓扑排序在图论中,拓扑排序(TopologicalSorting)是一个有向无环图(DAG,DirectedAcyclicGraph)的所有顶点的线性序列。且该序列必须满足下面两个条件:(1)每个顶点出现且只出现一次。

什么是启发式搜索?

本篇将会结合实例解析启发式搜索,帮助大家更好理解。启发式搜索(英文:heuristicsearch)是一种改进的搜索算法。它在普通搜索算法的基础上引入了启发式函数,该函数的作用是基于已有的信息对搜索的每一个分支选择都做估价,进而选择分支。简单来说,

回溯法入门级讲解

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