随笔分类 -  算法分析

摘要:Determining whether or not a polygon (2D) has its vertices ordered clockwise or counterclockwise Written by Paul BourkeMarch 1998 The following descri 阅读全文
posted @ 2020-09-08 07:01 卡卡西村长 阅读(478) 评论(0) 推荐(0) 编辑
摘要:最近在写一个程序,其中需要对B样条曲线进行拟合。但是B样条曲线的公式实在复杂,看着就头晕。于是,我将问题进行了简化。一段B样条曲线,可以近似地看成是若干段抛物线构成的,所以,曲线拟合问题就被转换为抛物线拟合问题了。对于抛物线拟合问题,可以使用《计算方法》中的最小二乘法,最后求解线性方程组的地方,用的是高斯消去法。本文用C#实现了这两种算法。 最小二乘法是一种数据优化技术,在已经得到一组数据的情况下,通过最小化误差平方和的办法,找出最接近的函数。关于最小二乘法的详细说明,可以查看维基百科,本文直接把其中的公式拿来使用。 假设有一组实测的坐标点数据,绘制在窗体上,效果如下图所示: 从图上可以看出. 阅读全文
posted @ 2012-08-27 14:58 卡卡西村长 阅读(17707) 评论(7) 推荐(0) 编辑
摘要:在北京、上海这样的一线城市,地铁绝对是上班族的首选交通工具,尽管有时挤得要命,但你真的找不出比地铁更准点的交通工具了。平时出门,我也总是习惯于在百度地图或丁丁地图里先查询一下地铁乘车路线,这些程序用起来非常方便。最近几天终于有点空余时间了,我就在想,我是否也可以写一个这样的程序?作为一名专业码农,我 阅读全文
posted @ 2012-08-08 23:09 卡卡西村长 阅读(22185) 评论(97) 推荐(57) 编辑
摘要:最近在封装Excel组件,需要提供两个接口,分别根据单元索引和单元名称访问单元格。例如,GetCell(1, 2)和GetCell(“A2”),这两种方法返回的结果是相同的。这里遇到一个问题,如何在单元索引([1,2])和单元名称(A2)之间相互转换?由于在单元索引和单元名称中,行号是相同的,所以我们只需要转换列号就可以了。本来以为是个很简单的问题,结果调试了好长时间才搞定。于是写了这篇文章,总结一下。【问题描述】在Excel中,列的名称是这样一个递增序列:A、B、C、…、Z、AA、AB、AC、…、AZ、BA、BB、BC、…、BZ、CA、…、ZZ、AAA、AAB…。我们需要将上述列名序列和以下 阅读全文
posted @ 2012-05-14 11:08 卡卡西村长 阅读(25475) 评论(0) 推荐(4) 编辑
摘要:在Visual Studio .NET中,一个解决方案可以包含多个项目,一个项目可以引用若干其它项目。编译的时候,VS会自动确定每个项目的编译顺序。VS究竟是如何计算出这个顺序的呢?如果学习过数据结构,可以很容易回答出这个问题:拓扑排序(Topological Sort)。什么是拓扑排序?让我们来温习一下。百度百科上的介绍如下:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈E(G),则u在线性序列中出现在v之前。上述介绍抽象,不如用实际案例来解释一下。假如在VS 阅读全文
posted @ 2012-05-14 11:08 卡卡西村长 阅读(3801) 评论(2) 推荐(1) 编辑
摘要:最近编程时遇到一个问题:有一组对象,要求随机地访问其中每一个对象,并且每个对象只访问一次。如果我们将访问顺序转换为一组整数序列,那么这就是一个关于“非重复随机序列生成算法”的问题。本文将探讨这个问题的多种解法,并给出一个非常高效的算法。【问题描述】:有一个自然数N,希望得到一个整型序列,该序列包含N个整数,从0到N-1,呈随机分布状态,且不重复。【问题分析】:生成随机数是简单的,关键是,如何保证不重复呢?一般来说,我们有两种思路: 思路1:我们不能保证每次生成的随机数都是不重复的,但是可以在生成随机数之后,判断这个数值是否已经生成过了,如果已经生成过了,那就重新生成一个,直到生成一个新的数值。 阅读全文
posted @ 2012-05-14 11:07 卡卡西村长 阅读(14408) 评论(7) 推荐(2) 编辑