算法
文章平均质量分 86
敲码的钢珠
胜固欣然,败亦可喜。
展开
-
滑动窗口算法思想(附经典例题)
滑动窗口算法思想是一个高频的算法思想,其所涉及的问题也是比较广泛、比较经典的,同时难度也通常是不小的,这篇文章谨记录自己对滑动窗口算法思想的一些思考和总结,也欢迎补充、纠正错误,与诸君共勉。原创 2022-01-10 20:20:39 · 4205 阅读 · 0 评论 -
贪心算法小结
贪心算法最通俗易懂 幽默风趣的讲解,帮你快速入门,毫无压力!!原创 2021-12-29 23:06:08 · 276 阅读 · 0 评论 -
经典八皇后问题(回溯算法)
八皇后原题OJ链接https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/13/ALDS1_13_A经典八皇后问题,最直接的方法就是利用条件去限制进行穷举搜索,但这样子是没有办法满足题意要求的时间效率的,这里我们用回溯算法来解决这道问题。回溯算法:所谓回溯算法,就是系统地尝试所有可能得出正确的解的状态,当发现当前状态得不到解时就中断当前搜索并且返回(以当时中断的位置为起点)上一状态继续搜索,这样的手法就叫回溯,顾名思义嘛。其实原创 2021-11-01 10:01:32 · 498 阅读 · 3 评论 -
状态压缩动态规划(接上文伏笔)
状态压缩DP的原理和细节这里不做过多的补充和介绍,重点是给大家展示完整的AC代码,通过精妙、精简的源代码实现理解的深入。(如果不清楚什么是状压dp,可以参考其他大佬的博客哦( *^-^)ρ(*╯^╰))简单说明与引入:状压dp的本质其实也是基于一种暴力枚举算法,不过是借助了bit masking 位运算和二进制0-1特点来记录存储运算,提高算法效率。注意点:通常有俩种模型:1、集合类(加权图等):e.g.TSP、Hamilton 距离、CPP(中国邮路问题)......2、连原创 2021-10-29 21:34:07 · 139 阅读 · 0 评论 -
动态规划(Dynamic Programming)总结
做了一部分的动态压缩的题目,来整理归纳一下。(仅仅是以初学者的视角出发,还有很多不足和欠缺的地方,也希望各路大神指正,以后遇到新的dp类问题再来补充吧(っ °Д °;)っ)动态规划主要应用于解决最优解的问题,这类问题往往具有局部最优子结构,一般的dp还由重复子问题,而且存在仅依赖于前一个或者前几个状态的状态迁移方程,利用分治与递归的算法思想,可以实现动态规划自底向上的实现结果的求解。动态规划的优点:动态规划的优点主要在于其在实现以递归为基础的算法时,避免使用函数层层递归的结构,而是跳脱出来利原创 2021-10-29 21:12:28 · 2222 阅读 · 2 评论 -
Levenshtein Distance(编辑距离)算法C++实现及应用
编辑距离的定义编辑距离(Edit Distance)最常用的定义就是Levenstein距离,是由俄国科学家Vladimir Levenshtein于1965年提出的,所以编辑距离一般又称Levenshtein距离。它主要作用是测量两个字符串的差异化程度,表示字符串a至少要经过多少个操作才能转换为字符串b,这里的操作包括三种:增加、删除、替换。举个例子:(1)增加:对于字符串a:abc 和 字符串b:abcde,显然,只需要在字符串a的末尾增加字符'd'和'e'就能变成字符串b了,所以a和b的最短原创 2021-10-28 18:20:41 · 4527 阅读 · 3 评论 -
反转单链表的四种算法实现
本节带领大家研究一个和单链表有关的问题,即如何实现单链表的反转。反转链表,又可以称为翻转或逆置链表,它们表达的是同一个意思。以图 1 所示的链表为例:图 1 未反转的链表经过反转(翻转、逆置)后,得到的新链表如图 2 所示:图 2 反转后的链表通过对比图 1 和 图 2 中的链表不难得知,所谓反转链表,就是将链表整体“反过来”,将头变成尾、尾变成头。那么,如何实现链表的反转呢?常用的实现方案有 4 种,这里分别将它们称为迭代反转法、递归反转法、就地逆置法和头插...原创 2021-10-28 12:22:24 · 226 阅读 · 0 评论