算法
通过代码实现算法,并剖析其原理实现。
github地址:https://github.com/ZZF98/arithmetic
蛇皮皮蛋
求大佬笔下留情……
展开
-
算法——动态规划(DP)
动态规划问题,大致可以通过以下四部分进行解决:划分阶段:按照问题的时间或空间特征,把问题分为若干个子阶段。(划分后的子阶段一定要是有序的或者是可排序的,否则问题就无法求解。) 状态表示:将问题发展到各个阶段时所处于的各种客观情况用不同的状态表示出来。(要满足无后效性。) 状态转移:状态转移就是根据上一阶段的状态和决策来导出本阶段的状态。 确定边界:状态转移方程是一个递推式,需要一个递推的...原创 2019-08-12 16:08:28 · 3774 阅读 · 0 评论 -
算法——迪克斯特拉算法
迪克斯特拉算法主要分四个步骤:找到“最便宜”的节点(可在最短时间内到达的节点)。 更新该节点的邻居节点的开销。 重复这个过程,直到对图中每个节点都做了。 计算最终路径。这个算法的核心理念是:找到图中最便宜的节点,并确保没有到该节点更便宜的路径。 (所以需要注意的是如果你的图包含负权边,就不能用这个算法,因为这会导致已经处理过的节点更新。)假设我现在有上面的一张图,计算A->...原创 2019-08-09 19:40:19 · 15493 阅读 · 6 评论 -
算法——广搜(BFS)/深搜(DFS)
在图的基本算法中,最初接触的就是图的遍历算法,根据访问节点的顺序,可分为广度优先搜索(BFS)和深度优先搜索(DFS)。广度优先搜索广度优先搜索算法主要解决两个问题:从节点A出发有到节点B的路径吗? 从节点A出发到节点B的最短路径是哪条?实现方式: 它的实现方式可以用队列的数据结构去理解(先进先出),每次取出一个节点都将这个节点相邻的节点加入队列尾部,直到找到需...原创 2019-08-09 12:41:46 · 5402 阅读 · 0 评论 -
算法——快排算法
快速排序是一种分治思想,里面通过将定位一个基准数然后划分两个数组,然后再各自对这两个数组进行相同的算法,一直到一个空数组(开头和结尾都是同一个下标)原理首先通过定位一个基准数,然后通过移动指针将其划分两个数组,如果是正序那么就是比基准数大的放右边,比它小的放左边,如果是倒叙,那么比它大的放左边,比它小的放右边。这样就将一个数组分成了两个子数组,然后再按照同样的方法把子数组再分成更...原创 2019-08-03 10:13:00 · 4524 阅读 · 0 评论