
算法
文章平均质量分 90
燕山暮雪
人生在世,唯篮球和代码不可辜负
展开
-
判断有向图是否有回路的另外一种方法--拓扑排序
#include <iostream>#include <string>#include <queue>using namespace std;typedef struct Edgenode{ int adjvex; struct Edgenode *next;}Edgenode;typedef struct Vertexnode{ string data; Edgenode *firstedge;}Vertexn...转载 2021-05-25 15:03:15 · 1034 阅读 · 0 评论 -
如何判断图中是否有环,如果有输出每条环
题目】试写一个求有向图G中所有简单回路的算法【思路】方法一:DFS搜索,直到搜索到已经遍历到的结点–>说明:找到了回路判断该回路是否已经搜索到了(重复吗?)不重复,放入结果集方法二:DFS搜索,只往结点编号大的结点搜索–>这样就不会重复寻找搜索到和第一个位置上的结点相同–>搜索到了路径找到后放入结果集【测试数据】123456对应ABCDEF文章目录方法一:用ALGraph举例方法二:用MGraph举例方法一的完整代码方法二的完整代码方法一:用ALGr转载 2021-05-25 14:52:47 · 831 阅读 · 0 评论 -
十本数据结构与算法书籍推荐
学计算机的人是幸福的,因为在这个领域中有如此多的通俗易懂(相对来说)的经典好书,你需要做的只是坚持把它们一本一本读下去而已。在这里列出一些我看过或者准备看的算法书籍,以供参考。第一名原书名:The Art of Computer Programming中文名:计算机程序设计艺术作者:Donald E.Knuth难度:★★★★★个人评价:★★★★★推荐程度:★★★本书是算法分析的经典名作(用经典不太恰当,应该是圣经或史诗),被科学美国人列为20世纪12大科学名著之一(和Di.原创 2021-05-20 23:02:21 · 17126 阅读 · 0 评论 -
有向图的表示、存储及DFS/BFS实现(C++)--丰富注释+功能完整版
1 基本概念1.1 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G=(V,E) 其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。 注: 在线性表中,元素个数可以为零,称为空表; 在树中,结点个数可以为零,称为空树; 在图中,顶点个数不能为零,但可以没有边。1.2 图的存储结构 考虑图的定义,图是由顶点和边组成的,分别考虑如何存储顶点、如何存储边。1.2.1 邻接矩阵原创 2021-05-18 15:59:15 · 2795 阅读 · 1 评论 -
深入浅出介绍哈希表
为什么要使用哈希表查找和插入是查找表的两项基本操作,对于单纯使用链表,数组,或二叉树实现的查找表来说,这两项操作在时间消耗上仍显得比较昂贵。 以查找为例:在数组实现的查找表中,需要用二分等查找方式进行一系列的比较后,才能找到给定的键值对的位置。而二叉树的实现中也存在着一个向左右子树递归查找的过程。 而现在,我们希望在查找/插入/删除这三项基本操作里, 能不通过比较,而是通过一个哈希函数的映射,直接找到键对应的位置,从而取得时间上的大幅优化, 这就是我们选用哈希表的原因。相比起哈希表,其他的查找.原创 2021-05-07 10:28:50 · 383 阅读 · 0 评论 -
程序员与线性代数(1)
*********************************************************************************************在线性代数两种核心运算中都与向量有关。这两种运算分别是:向量相加、向量与数c相乘。这两种运算相结合就是线性组合(linear combination)cv+dw线性组合在本学科中十分重要。有时我们需要一个具体的组合,可以选择c=2 d=1,此时得到cv+dw =(4,5);有时,我们需要v和w的所有组合(c和d的取.转载 2020-07-10 14:17:13 · 432 阅读 · 0 评论 -
程序员应该如何学习线性代数
线性代数是什么?在大学数学学科中,线性代数是最为抽象的一门课,从初等数学到线性代数的思维跨度比微积分和概率统计要大得多。很多人学过以后一直停留在知其然不知其所以然的阶段,若干年之后接触图形编程或机器学习等领域才发现线性代数的应用无处不在,但又苦于不能很好地理解和掌握。的确,多数人很容易理解初等数学的各种概念,函数、方程、数列一切都那么的自然,但是一进入线性代数的世界就好像来到了另一个陌生的世界,在各种奇怪的符号和运算里迷失了。我在初接触线性代数的时候简直感觉这是一门天外飞仙的学科,一个疑问在我脑转载 2020-07-08 11:04:31 · 923 阅读 · 1 评论 -
如何学好数据结构与算法,看这篇文章就够了
学习数据结构与算法,还是很有必要看几本相关的书籍,但根据不同基础的人,合适看的书也不一样,因此,针对不同层次、不同语言的人,推荐几本市面上口碑不错的书。1. 入门级针对刚入门的同学,建议不要急着去看那些经典书,像《算法导论》、《算法》这些比较经典、权威的书。虽然书很好,但看起来很费劲,如果看不完,效果会很不好。所以建议先看两本入门级的趣味书:《大话数据结构》《算法图解》大话数据结构将理论讲的很有趣,不枯燥。作者结合生活中的例子去对每个数据结构和算法进行讲解,让人通俗易懂。算法图解这转载 2020-05-29 18:52:32 · 1089 阅读 · 0 评论 -
OpenMP 中的线程任务调度(负载均衡)
OpenMP中任务调度主要针对并行的for循环,当循环中每次迭代的计算量不相等时,如果简单地给各个线程分配相同次数的迭代,则可能会造成各个线程计算负载的不平衡,影响程序的整体性能。如下面的代码中,如果每个线程执行的任务数量平均分配,有的线程会结束早,有的线程结束晚: 1 #include<stdio.h> 2 #include<omp.h> 3 4 int main...转载 2018-04-08 20:00:41 · 3518 阅读 · 0 评论