
算法
黄建斌
我们坚持一件事情,并不是因为这样做了有效果,而是坚信,这样做是对的。
展开
-
旋转矩阵的理解和使用
旋转矩阵的表现形式点A以列表示且右乘旋转矩阵原坐标轴改变至新坐标轴旋转矩阵M={新x轴x,新y轴x, 新x轴y,新y轴y}绕原坐标轴原点旋转角度a旋转矩阵M={ cos(a), -sin(a), sin(a), cos(a) }以上两者意思一样,不原创 2014-02-20 14:25:27 · 4632 阅读 · 0 评论 -
快速排序
思想:分治法从数组中选取一个pivot(基准)将数组分为两部分,比基准小的放在基准左边,比基准大放在基准右边(分区)。然后继续对左右两部分做同样处理(递归)。以下给出两种partition思路partition1:int partition(int *a, int left, int right, int pivotIndex) { int pivotValue =原创 2014-02-23 13:58:08 · 598 阅读 · 0 评论 -
判断小字符串中字母在大字符串中是否全部存在
第一反应竟然想到了“埃拉托斯特尼筛法”!哦,不是它的筛选,而是它的用空间换时间(我也不知道怎么会把这两个联想到一起去)。 创建一个26位数组bool mark[26]用来代表26个字母在长字符串中是否存在。mark[0]代表A,mark[1]代表B...如对以下例子: String longStr = “ABUJDGS”; String shortStr = “UJ”原创 2014-02-17 17:11:35 · 884 阅读 · 0 评论 -
左旋转数组
左旋转:把数组前若干数移动到尾部,如把字符串abcdef左旋转2位得到cdefab。右旋转则相反。 自己想的,时间复杂度O(n)。例子:#includeusing namespace std;templatevoid LeftShift(T *p, int len, int k) { if(k%len == 0)return ; k %= len; bool ch原创 2014-02-17 02:15:03 · 766 阅读 · 0 评论 -
字符串匹配:KMP算法
非常感谢网上的大神们给出的参考,终于勉强弄懂了,在此自己总结复习一遍,也希望能帮助到大家。参考:《字符串匹配的KMP算法》《KMP算法》普通算法 提供长字符串P,和短字符串B,要求查出在P中与B相同的子串 最最普通算法:从头开始一个个检测,检测失败则移动到下一个字符再从头开始一个个检测。这个不消多说。代码://最简单粗暴 #includ原创 2014-02-18 22:09:06 · 704 阅读 · 0 评论 -
凸多边形最小面积包围矩形
可以此计算2D图形的OBB计算几何中有这样一条结果:凸多边形的最小包围矩形至少有一条边与多边形的一条边共线。于是遍历每一条边构造包围矩形比较面积大小。说是构造包围矩形,其实只需要投影点到边以及垂直边上取距离最远两点距离得长宽后求面积即可。/* min value */#define FLT_MIN 1.175494351e-38F /* max value */#defi原创 2014-02-23 20:08:03 · 12003 阅读 · 13 评论