算法笔记
文章平均质量分 79
算法笔记
小天才才
而世之奇伟、瑰怪,非常之观,常在于险远,而人之所罕至焉,故非有志者不能至也
展开
-
面试常用排序查找算法
插入排序算法的优点是简单易懂,对于部分有序或者数据量较小的数组效率较高。,其中n是数组的长度。缺点是需要额外的空间来存储堆结构,并且对于稳定性要求高的场合不适用。,其中n是数组的长度。,其中n是数组的长度。缺点是要求数组必须是有序的,并且对于动态变化的数组不适用。冒泡排序算法的优点是简单易懂,不需要额外的空间。选择排序算法的优点是简单易懂,不需要额外的空间。,其中n是数组的长度。缺点是不稳定,并且对于不同的间隔选择效率有影响。,其中n是数组的长度。,其中n是数组的长度。,其中n是数组的长度。原创 2023-10-02 22:33:58 · 695 阅读 · 0 评论 -
C++STL库常用库函数总结
C++STL库常用库函数总结1.vector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() 访问第一个元素/最后一个元素 push_back()/pop_back() 插入/弹出最后一个元素 begin()/end() 开始元素迭代器/结尾元素迭代器 [] 支持比较运算,按字典序2.pair<int, i原创 2022-01-19 17:35:08 · 3316 阅读 · 2 评论 -
【数据结构】关键路径中为什么事件的最早发生时间是源点到顶点的最长路径长度?
在思考这个问题之前,我们先来了解一下,在关键路径中,开始和发生有什么区别?开始和发生 “发生”是针对于事件的,也就是图中的顶点。只有在指向该顶点的所有有向边对应的活动结束,该顶点所代表的事件才发生。 举个例子,一个事件C,它仅被两条边a, b指向,仅当a,b两活动都完成时,事件C发生。 “开始”是针对于活动的,也就是图中的边。只有在一个顶点所代表的事件发生后,从该顶点出发的所有边对应的活动才能开始。最早发生时间 刚开始我也很疑惑,为什么是最长的路径长度决定最早的发生时间呢?难道不应该原创 2021-09-19 20:22:49 · 2652 阅读 · 6 评论 -
【搜索算法】练习二:poj3278 Catch That Cow、poj1426 Find The Multiple
文章目录poj3278 Catch That Cow1.题目描述2.输入要求3.输出要求4.题目解释5.测试样例6.代码poj1426 Find The Multiple1.题目描述2.输入要求3.输出要求4.题目解释5.测试样例6.代码poj3278 Catch That Cow题目链接:https://vjudge.net/problem/POJ-32781.题目描述 Farmer John has been informed of the location of a fugitive cow原创 2021-04-16 21:06:02 · 814 阅读 · 0 评论 -
【搜索算法】练习一:poj1321 棋盘问题、poj2251 Dungeon Master
文章目录poj1321 棋盘问题1.题目描述2.输入要求3.输出要求4.测试样例5.代码poj2251 Dungeon Master1.题目描述2.输入要求3.输出要求4.题目解释5.测试样例6.代码poj1321 棋盘问题题目链接:https://vjudge.net/problem/POJ-13211.题目描述 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可原创 2021-04-13 20:00:22 · 1010 阅读 · 2 评论 -
算法笔记学习(5)---快速幂
先来看一个问题:给定三个正整数a、b、m (a<10, b<10,1<m<10),求ab%m。这只要学过循环就能写出来了,就像下面的代码,时间复杂度是O(b):typedef long long LL;LLpow(LL a , LL b , LL m){ LL ans = 1; for(int i=0;i<b;i++) { ans = ans * a % m; } return ans;}代码中使用long long而不用int的原因是防止两个in原创 2021-03-06 16:19:11 · 1031 阅读 · 0 评论 -
《算法笔记》codeup第三章刷题记录---入门模拟
文章目录@[toc]《算法笔记》3.1小节——入门模拟->简单模拟问题 A: 剩下的树问题 B: A+B问题 C: 特殊乘法问题 D: 比较奇偶数个数问题 E: Shortest Distance (20)问题 F: A+B和C (15)问题 G: 数字分类 (20)问题 H: 部分A+B (15)问题 I: 锤子剪刀布 (20)《算法笔记》3.2小节——入门模拟->查找元素问题 A: 统计同成绩学生人数问题 B: 找x问题 C: 查找学生信息问题 D: 查找问题 E: 学生查询《算法笔记》3.原创 2021-02-18 16:46:41 · 4435 阅读 · 2 评论 -
算法笔记学习(4)---邻接矩阵、邻接表、拓扑排序
邻接矩阵 设图G(V,E)的顶点标号为0, 1,…,N-1,那么可以令二维数组G[N] [N]的两维分别表示图的顶点标号,即如果G[ i ] [ j ]为1,则说明顶点i和顶点j之间有边;如果G[i] [j]]为0,则说明顶点i和顶点j之间不存在边,而这个二维数组G[ ] [ ]则被称为邻接矩阵。另外,如果存在边权,则可以令G[ i ] [ j ]存放边权,对不存在的边可以设边权为0、-1或是一个很大的数。 图10-4是一个作为举例的无向图以及对应的邻接矩阵(边权为0表示不存在边),显然对无向图来说原创 2021-01-30 21:03:50 · 4662 阅读 · 2 评论 -
算法笔记学习(3)---深度优先搜索(DFS)
深度优先搜索(DFS)设想我们现在身处一个巨大的迷宫之中,以当前所在位置为起点,沿着一条路向前走,当碰到岔路口的时候,就选择其中一个岔道口前进。如果选择的这个岔路前方是一条死路,就退回到这个岔道口,选择另一个岔路前进。如果岔路中存在新的岔道口,那么依然按上面的方法枚举新岔道口的每一条岔路。这样,只要迷宫存在出口,那么这个方法一定能够找到它。下面举一个迷宫的例子,分步骤解释如何通过DFS找到最后的出口。假设每次遇到岔道口都选择最右手边的岔路,直到碰到死胡同才回退到最近的岔道口选择另一条岔路。(1)第原创 2021-01-24 19:13:52 · 1859 阅读 · 1 评论 -
算法笔记学习(2)---入门模拟
文章目录一、简单模拟1.问题A:剩下的树2.问题B:A+B3.问题 E: Shortest Distance一、简单模拟1.问题A:剩下的树题目链接:http://codeup.hustoj.com/problem.php?cid=100000575&pid=0题目描述:有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,…,L共L+1个位置上有L+1棵树。现在要移走一些树,移走的树原创 2021-01-18 09:44:21 · 1211 阅读 · 0 评论 -
算法笔记学习(1)---输出精度、for、冒泡排序
1.如何控制输出精度和小数点原题网站:点击进入题目描述:求一元二次方程ax^2+bx+c=0的根,三个系数a, b, c由键盘输入,且a不能为0,且保证b^2-4ac>0。程序中所涉及的变量均为double类型。输入:以空格分隔的一元二次方程的三个系数,双精度double类型输出:分行输出两个根如下(注意末尾的换行):r1=第一个根r2=第二个根结果输出时,宽度占7位,其中小数部分2位。样例输入1 3 2样例输出r1= -1.00r2= -2.00代码如下#原创 2021-01-15 11:10:07 · 1154 阅读 · 0 评论