- 博客(6)
- 收藏
- 关注
原创 最短路四种算法代码实现+详细注释(Dijkstra,bellman-ford,spfa,Floyd分别对应不同题型)
最短路的四种算法Dijkstra(只能解决正权边,单源)bellman-ford(可以解决负权边,单源)spfa(可以解决负权边,单源)Floyd(可以解决负权边,多源)总结在求最短路的问题上,根据问题可以选择不同的算法来求解,请看下图:接下来,我们将依次介绍这些算法解决哪些不同的问题。前提摘要(在以下算法中,n和m分别代表点数和边数)Dijkstra(只能解决正权边,单源)Dijkstra算法分为朴素版和堆优化版,分别解决稀疏图和稠密图两种问题。当m很大即边数很多时,该图为稠密图,适合用邻接矩
2021-05-13 17:15:10
1381
原创 链式前向星附详细代码解析
链式前向星是一种类似于邻接表的存图方式,同样适用于有向图和无向图。他建立的是边与边之间的联系。在解决最短路的问题时,面对稀疏图,用邻接矩阵显然不可以,而在邻接表的选择上,用Vector的效率不如链式前向星。例如下面的题Invitation Cards链式前向星其实就是静态建立的邻接表,时间效率为O(m),空间效率也为O(m)。遍历效率也为O(m)。5 71 2 12 3 23 4 34 5 41 3 31 5 54 5 6链式前向星存的是以【1,n】为起点的边的集合,对于上面的数
2021-05-10 11:11:55
388
原创 最短路(dijkstra)详解及其堆优化
最短路(dijkstra)及其堆优化Djkstra 算法解决的问题是:给定图和源顶点v,找到从v至图中所有顶点的最短路径。先看一个问题http://acm.hdu.edu.cn/showproblem.php?pid=2544在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?输入包括多组数据。每组数据第一行是两个整数N、M(N<=
2021-04-30 12:05:45
775
原创 c++ 队列(queue)与优先队列(priority_queue)用法详解
队列与优先队列(priority_queue)用法详解队列queue与优先队列头文件均为#include<queue>,队列与优先队列的不同之处在于优先队列可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队。首先我们来看一下队列和优先队列的基本操作队列(queue)在定义时 queue<类型>队列名 它的基本操作有push 在队列尾部插入一个元素pop 将队列中最靠前位置的元素拿掉(剔除)。无返回值的void函数。size 返回队列
2021-04-30 11:26:57
923
原创 LCM Walk(详细题解,一看就会)
LCM Walk(详细题解,一看就会)问题描述A frog has just learned some number theory, and can’t wait to show his ability to his girlfriend.Now the frog is sitting on a grid map of infinite rows and columns. Rows are numbered 1,2,⋯1,2,⋯ from the bottom, so are the columns
2021-04-30 10:15:28
255
原创 递归、回溯和DFS(深度优先搜索)
递归、回溯和DFS(深度优先搜索)1、递归递归:简单来说就是自己调用自己。案例:斐波那契数列斐波那契数列的是这样一个数列:1、1、2、3、5、8、13、21、34…,即第一项 f(1) = 1,第二项 f(2) = 1…,第 n 项目为 f(n) = f(n-1) + f(n-2)。求第 n 项的值是多少。(1)、递归函数功能假设 f(n) 的功能是求第 n 项的值,代码如下:int f(int n){ }(2)、递归结束的条件显然,由题目可知,当 n = 1 或者 n =
2020-12-11 17:26:43
707
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅