![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心算法
连人
这个作者很懒,什么都没留下…
展开
-
贪心算法:最小生成树 Prim算法&Kruskal算法
Prim:以某个点开始,将最近的相邻点扩充为自己新的集合,再以这个新的集合拉取新的最近点,直到所有点被拉入这个集合,这个集合就是最小生成树。Kruskal:“填边”的思想,将边的数据由小到大排序,若新填入的边没有形成环,则这条边就是最小生成树的一部分。判断是否形成环使用并查集的方法。void Prim(int g[7][7]){ int included[7] = {0,1,0,0,0...原创 2020-02-18 16:17:20 · 1140 阅读 · 0 评论 -
贪心算法:单源最短路径 Dijkstra算法
Dijkstra算法的思想与Prim算法类似而又不同,都是一步一步将点纳为一个集合,但Dijkstra下一步是寻找离源点最近的点将其纳入。每个点上会记录两个信息:上一个点是哪个以及离源点的距离。每次我们纳入新点之后,要实时更新离源点的信息。我们使用pre数组来回溯上一个点是哪个,再用length数组记录距离。如图,以0为源点,判断到8的最短距离。最开始的集合为0 1 2 3 4...原创 2020-02-16 18:21:40 · 797 阅读 · 0 评论 -
贪心算法:活动安排问题
大家好,我是连人。这次的问题比较简单,我们就直接单枪直入了。有n个活动都要用到同一个地点,他们提交的申请书上明确的写了自己的使用时间是从何时开始何时结束的。现要求尽可能多的安排活动。首先将活动按结束时间从前到后排好,开始时间无所谓。将第一个活动计入日程,此时活动结束时间是第一个活动的结束时间。之后向后遍历,将开始时间在当前活动结束时间之后的活动计入,更新活动结束时间。def sort(a, ...原创 2020-02-16 17:34:58 · 370 阅读 · 0 评论