算法
文章平均质量分 66
蚩尤煜
这个作者很懒,什么都没留下…
展开
-
Floyd算法实现
目录原理实现原理我们从一个点i到另一个点j,无非就两种走法直接从i到j通过中间点k中转,i⟶k⟶ji \longrightarrow k \longrightarrow ji⟶k⟶j(在经过多个中间点的时候也是一样的,i⟶k1⟶k2⟶...⟶ji \longrightarrow k_1 \longrightarrow k_2 \longrightarrow ... \longrightarrow ji⟶k1⟶k2⟶...⟶j,经过的这么多中转都可以划分成多段通过一个中间点中转的做原创 2022-04-01 22:13:39 · 298 阅读 · 0 评论 -
堆介绍及其实现
目录定义存储方式向下调整建堆建立最小堆建立最大堆完整代码(最小堆)堆应用——priority_queue定义使用数组存储堆,因为堆是一种特殊的完全二叉树,所以可以使用数组存储堆。比如下面的这个堆:它在数组中的存储情况是这样的:arr[1]=1, arr[2]=2, arr[3]=5,…, arr[14]=92我们可以注意到,这棵完全二叉树的所有父结点都比子结点要小。符合这个特点的完全二叉树称为最小堆,而如果这棵完全二叉树的所有父结点都比子结点要大,那么就是最大堆。存储方式我们一般使用一个二转载 2021-05-30 14:12:12 · 194 阅读 · 0 评论 -
N皇后问题
N皇后问题分析定义代码分析每行的皇后放置都会影响其他位置的皇后,那么我们可以在每一行尝试这一行的每个位置,看能否找到合适的位置放置皇后。模拟我们现实放置的情况,我们从第一行开始放置,尝试这第一行的每个位置,合适了就放置,然后开始放置下一行,直到放完N行。然后再重新更换前面没有尝试过的位置,继续重复上面的操作。定义代码中我使用第0行表示现实中的第1行我们使用一个名为queenPos数组的数组存放每一行皇后放置的位置一个整型n表示N皇后的N,即有多少行int queenPos[100];原创 2021-03-23 21:57:20 · 54 阅读 · 0 评论 -
Sunday算法
Sunday算法此原理转自其他博客,侵立删代码为自己写的,希望大家能看懂原理介绍Sunday算法由Daniel M.Sunday在1990年提出,它的思想跟BM算法很相似只不过Sunday算法是从前往后匹配,在匹配失败时关注的是主串中参加匹配的最末位字符的下一位字符。如果该字符没有在模式串中出现则直接跳过,即移动位数 = 模式串长度 + 1;否则,其移动位数 = 模式串长度 - 该字符最右出现的位置(以0开始) = 模式串中该字符最右出现的位置到尾部的距离 + 1。下面举个例子说明下转载 2021-03-22 23:50:55 · 277 阅读 · 0 评论 -
简要介绍康托展开
本篇文章并不会详细讲解康托展开的数学原理,有兴趣的朋友可以另行寻找。康托展开作用:判断这个数在其各个数字全排列中从小到大排第几位。比如 132,在1、2、3的全排列中排第2位。首先定义一个特殊的进制:0! 1! 2! 3! 4! ...即——1 1 2 6 24 ...可类比其他进制,如十进制:1 10 100 1000 ...则312=(2*1 + 1*10 + 3*100)某个排列的位置算法: ∑(比这位上的数小的数的个数 * 这位数在排列中从右到左的位数) + .原创 2020-10-11 21:52:30 · 2358 阅读 · 0 评论 -
了解快速幂算法(基础)
快速幂算法的实现原创 2020-06-10 16:05:44 · 411 阅读 · 0 评论