17
2020
07

可编程的小车

前两天跟同事聊天,同事提到了少儿编程,机器人编程(控制小车沿着轨道走)。

15
2020
07

解一元二次方程

(A+x)*(B+x) = w,已知A、B、w,求x。

25
2020
06

连续双向队列

队列经常用,先进先出。一头进,另一头出。

双向队列,就是一头进,另一头出;另一头进,一头出。

13
2019
12

LZW算法

使用LZW算法对字符串进行压缩。

11
2019
07

Alpha 混合:两个半透明色的叠加

原文链接:https://blog.csdn.net/richardbao2000/article/details/2682018

17
2019
04

B树

在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binary search tree)一个节点可以拥有最少2个子节点。与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。

维基百科:B树

17
2019
04

Manacher算法

最长回文子串问题:给定一个字符串,求它的最长回文子串长度。

暴力解法:找到所有子串,验证是否是回文子串,时间复杂度是O(n^3)。

改进算法:遍历一遍字符串,求以每个字符为中心的回文子串长度,时间复杂度是O(n^2)。

用Manacher来解决最长回文子串问题,算法复杂度是O(n)。

Manacher算法属于动态规划,但是如果认为这样的算法才是动态规划,是对动态规划的误解,还会打击学习的积极性,动态规划只是在分治的基础上做了一些优化,《算法导论》里边讲的很好,也可以参考之前的一篇文章:动态规划

22
2019
03

全排列-邻位对换法

邻位对换法

该算法由Johnson-Trotter首先提出,是一个能快速生成全排列的算法。它的下一个全排列总是上一个全排列对换某相邻两位得到的。如果已知n-1个元素的排列,将n插入到排列的不同位置,就得到了n个元素的排列。用这种方法可以产生出任意n个元素的排列。这个方法有一个缺点:为了产生n个元素的排列,我们必须知道并存储所有n-1个元素的排列,然后才能产生出所有n阶排列。  

22
2019
03

全排列-递归法

如果已知n-1个元素的排列,将n插入到排列的不同位置,就得到了n个元素的排列。

20
2019
03

生成全排列-递增进位制法

递增进位制法 

这个算法是基于序列的递增进位制数。递增进位制数是指数字的进制随着位数的递增而递增。一般情况下,数字最右边的进制是2,次右边的进制是3,以此类推。n位递增进位制数一共包含n!个数字,所以它可以与全排列生成算法结合在一起。