摘要:
1、栈(Stack)是一种线性存储结构,它具有如下特点: (1)栈中的数据元素遵守“先进后出"(First In Last Out)的原则,简称FILO结构。(后进先出的叫法,也是可以的) (2)限定只能在栈顶进行插入和删除操作。 2、栈的相关概念: (1)栈顶与栈底:允许元素插入与删除的一端称为栈 阅读全文
摘要:
前言 有人说贪心算法是最简单的算法,原因很简单:你我其实都很贪,根本不用学就知道怎么贪。有人说贪心算法是最复杂的算法,原因也很简单:这世上会贪的人太多了,那轮到你我的份? 贪心算法思想: 顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义 阅读全文
摘要:
实际场景中,我们之所以觉得有些问题很难解决,主要原因是该问题涉及到大量的数据,如果只需要处理少量的数据,问题会变得非常容易解决。 举一个简单的例子,设计一个排序算法实现对 1000 个整数进行排序。对于很多刚刚接触算法的初学者来说,直接实现对 1000 个整数进行排序是非常困难的。而同样的问题,如果 阅读全文
摘要:
算法思路:用中间点 𝑘 更新最短路, 𝑖 → 𝑘 → 𝑗 。 算法实现:从小到大枚举 𝑘, 𝑖,𝑗 更新即可。 算法正确性:注意到实现时变量的枚举顺序很神奇。考 虑 𝑖 → 𝑗 的最短路 𝑎 1 = 𝑖, 𝑎 2 , 𝑎 3 , … , 𝑎 𝑚 = 𝑗 ,此时 阅读全文
摘要:
算法思路 用一个队列储存当前可能用于更新邻接 点的点,每次取出队首更新邻接点,若邻接点能被 更新,则把该点塞进队列(保证队列中没有相同的 点)。 看起来是个很不靠谱的算法,SPFA 只能在随机数据 下或者在某些 DP 模型中运行良好。 下面我们通过『怎样卡SPFA』来理解这个算法的问 阅读全文