技术教程

  • 最新
  • 浏览
  • 评论

【算法教程】【C/C++】DFS(深度优先搜索)——程序设计思路与代码实现

faryou7天前
【算法教程】【C/C++】DFS(深度优先搜索)——程序设计思路与代码实现
前言        搜索是算法学习者经常会用的一种算法,本质上是暴力算法的一种优化。我们在初期经常会用到BFS和DFS。今天我们来学习DFS。什么是递归        简单来说,就是函数自己调用自己。因为函数在运行过程中...

【算法教程】【C/C++】单源最短路径——程序设计思路与代码实现

faryou2个月前 (10-05)
【算法教程】【C/C++】单源最短路径——程序设计思路与代码实现
前言        最短路径是求在一张有向图中,起点到终点的距离。求最短路径的方法有很多,如SPFA、floyd、dijkstra等,今天我们学习dijkstra的思路与代码,其优点是时间复杂度和空间复杂度都很低,缺点是不能处理重边。程序设计思路 ...

【算法教程】【C/C++】最小生成树——程序设计思路与代码实现

faryou2个月前 (09-22)
【算法教程】【C/C++】最小生成树——程序设计思路与代码实现
前言        最小生成树是指在一个无向图内,找出一棵树,使得各个结点之间能够互相到达,且总路径长度最短。程序设计思路        最小生成树主要有两种思路——Kruskal和Prim,两者的时间复杂度为O...

【算法教程】【C/C++】并查集——程序设计思路与代码实现

faryou3个月前 (09-01)
【算法教程】【C/C++】并查集——程序设计思路与代码实现
前言        图论是算法中的一个重要内容,图的范围很广,包括二叉树、树、图等。今天我们来学习树的重要内容——并查集。程序设计思路        并查集是一个森林(由一棵或多棵树组成的集)。我们可以利用其特性进行一些...

【算法教程】【C/C++】DP(动态规划):背包DP——程序设计思路与代码实现

faryou3个月前 (08-19)
【算法教程】【C/C++】DP(动态规划):背包DP——程序设计思路与代码实现
前言        上一篇文章中我们学习了简单DP,今天我们来学习一种也很常见的DP——背包DP。程序设计思路        背包DP以01背包和完全背包为基础,其他的背包DP都由这两种延伸出去,先看01背包:...

【算法教程】【C/C++】DP(动态规划):简单动规问题——程序设计思路与代码实现

faryou3个月前 (08-10)
【算法教程】【C/C++】DP(动态规划):简单动规问题——程序设计思路与代码实现
前言        上一篇文章中介绍了递推,其实也是为今天的DP打好基础。程序设计思路        DP本质上就是对题目进行分类讨论,列出其不同情况下的状态转移方程,然后套上循环求解。    &nb...

【算法教程】【C/C++】递推——程序设计思路与代码实现

faryou5个月前 (07-07)
【算法教程】【C/C++】递推——程序设计思路与代码实现
前言        在算法中,递推是一种重要的方法。通过列出递推式,我们可以解决许多棘手的问题。“状态”...

【算法教程】【C/C++】三分算法——程序设计思路与代码实现

faryou5个月前 (06-30)
【算法教程】【C/C++】三分算法——程序设计思路与代码实现
前言        前面我们已经学习了二分算法。其实,对于一些特定问题,我们还可以使用三分算法。程序设计思路        三分,顾名思义,就是把数据分成三段,使用四个指针,其基本方向仍是缩小范围。我们可以重复检查左中指...

【算法教程】【C/C++】二分答案——程序设计思路与代码实现

faryou5个月前 (06-15)
【算法教程】【C/C++】二分答案——程序设计思路与代码实现
前言        事实上,我们在解决实际问题时一般会用二分答案而不是二分查找。今天我就来给大家介绍一下二分查找这种由二分法衍生出来的办法。程序设计思路        相比于二分查找,二分答案有极为重要的一点不同——ch...

【算法教程】【C/C++】二分查找——程序设计思路与代码实现

faryou6个月前 (06-01)
【算法教程】【C/C++】二分查找——程序设计思路与代码实现
前言        在信奥中,二分算法是一种非常重要的方法。利用它,我们在某些场合中寻找数时就不必要遍历数组,大大提高了效率。今天我们来学习二分算法的基本方法。程序设计思路        有这样一个问题:给你一个数组,数...