算法

记忆化搜索实例讲解

什么是记忆化搜索?记忆化搜索在本质上,还是动态规划,只是实现方式采用了深度优先搜索的形式,但是它不像深度优先搜索那样重复枚举所有情况,而是把已经计算的子问题保存下来,这样就和动态规划的思想不谋而合了。本篇文章会通过最简单的例子对记忆化搜索进行深入讲解,帮助大家学会什么是记忆化搜索。

哈密顿图的应用

哈密顿通路(回路)与哈密顿图(Hamilton图)通过图G的每个结点一次,且仅一次的通路(回路),就是哈密顿通路(回路)。下面总结四个定义,帮助大家理解。一、哈密顿图定义通过图中所有顶点一次且仅一次的通路称为哈密顿通路。通过图中所有顶点一次且仅一次的回路称为哈密顿回路。

C/C++如何设计函数多返回值?

有那么一种情况,函数本身需要返回多个值,如在地图参数中需要返回二维坐标(x,y),或者是系统设计中需要返回一个学生多门课程的成绩。这里提供了一些做法和思路。1.全局变量,为什么不用它?如,这样的方法,当我们需要通过函数对多个值进行返回和传递的时候,

C++的区别

1.从C语言到C++1980年,BjarneStroustrup博士着手创建一种新的语言,能够具有面向对象的程序设计特色。在当时,面向对象编程是一个新颖的概念,Stroustrup博士并不是从头开始设计新语言,而是使用C语言进行修改,而这就是C++语言。

图论中的有向无环图

在图论中,如果一个有向图从任意顶点出发无法经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均为有向无环图。一、简介有向无环图是图论的重要概念,

最优化算法实例讲解

DFS(深度优先搜索)是一种常见的算法,我们平时遇到的大部分题目都可以用DFS解决,但是一般情况下,这都是骗分算法,很少会有爆搜为正解的题目。因为DFS的时间复杂度特别高。一、定义DFS(深度优先搜索)定义上的深度优先搜索的思路与树的先序遍历非常相似,

线性DP图文实例讲解

线性DP,所谓线性DP,就是指我们的递归方程有一个明显的线性关系的,有可能是一维线性的,也可能是二维线性的。例题一:大盗阿福题目:阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。这条街上一共有NN家店铺,每家店中都有一些现金。

图论部分简介

图论(Graphtheory)是数学的一个分支,图是图论的主要研究对象。图(Graph)是由若干给定的顶点及连接两顶点的边所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系。顶点用于代表事物,连接两顶点的边则用于表示两个事物间具有这种关系。

归并排序算法实例详解

1.复杂度与稳定性算法时间复杂度最坏情况O(NlogN)最好情况O(NlogN)平均情况O(NlogN)空间复杂度O(N)注:归并排序需要创建一个与原数组相同长度的数组来辅助排序稳定性:稳定排序2.过程介绍归并排序的核心思想是将两个有序的数列合并成一个大的有序的序列。

KMP算法与前缀函数实例讲解

KMP算法与前缀函数(一)前缀函数一个字符串s的border是一个最长的字符串,且既是s的后缀,又是s的真前缀。给定长为n的字符串s,其前缀函数定义为一个长为n的数组π。其中π[i]为s的第i个前缀的border长度。(二)KMP算法全称为Knuth-Morris-Pratt算法,