Tag: 算法

将大数字(或字符串)压缩为小值

我的ASP.NET页面有以下查询字符串参数: …?IDs=1000000012,1000000021,1000000013,1000000022&… 在这种情况下, IDs参数将始终具有由某个东西分隔的数字。 目前有4个数字,但通常它们在3到7之间。 现在,我正在寻找将每个大数字从上面转换为最小可能值的方法; 具体压缩IDs查询字符串参数的值。 压缩每个数字算法或压缩IDs查询字符串参数的整个值都是受欢迎的。 编码或解码不是问题; 只压缩值IDs查询字符串参数。 为IDs创建一些唯一的小值,然后从某些数据源检索其值超出范围。 是否有算法将这些大数字压缩为小值或者将IDs查询字符串参数的值压缩在一起?

高效的字符串匹配算法

我正在尝试构建一个有效的字符串匹配算法。 这将在高容量环境中执行,因此性能至关重要。 这是我的要求: 给定域名,即www.example.com,确定它是否与条目列表中的“匹配”。 参赛作品可以是绝对匹配,即www.example.com。 参赛作品可能包含通配符,即* .example.com。 通配符条目从最定义的级别开始匹配。 例如,* .example.com将匹配www.example.com,example.com和sub.www.example.com。 未嵌入通配符条目,即sub。*。example.com将不是条目。 语言/环境:C#(。Net Framework 3.5) 我已经考虑将条目(和域查找)拆分成数组,颠倒顺序,然后迭代数组。 虽然准确,但感觉很慢。 我考虑过Regex,但我担心将条目列表准确地表示为正则表达式。 我的问题:根据上面列出的描述,找到一个字符串forms的字符串是否匹配字符串列表中的任何一个字符串的有效方法是什么?

Rabin Karp字符串匹配算法

我在网站的论坛上看过这个Rabin Karp字符串匹配算法,我有兴趣尝试实现它,但我想知道如果有人能告诉我为什么变量ulong Q和ulong D分别是100007和256:S ? 这些价值观带有什么意义? static void Main(string[] args) { string A = “String that contains a pattern.”; string B = “pattern”; ulong siga = 0; ulong sigb = 0; ulong Q = 100007; ulong D = 256; for (int i = 0; i >{0}<<{1}", A.Substring(0, B.Length), A.Substring(B.Length))); return; } ulong pow = 1; […]

如何在C#中更快地计算出简单的移动平均线?

计算简单移动平均值的最快库/算法是什么? 我写了自己的,但是在33万项十进制数据集上需要太长时间。 期间/时间(ms) 20/300; 60/1500; 120/3500。 这是我的方法的代码: public decimal MA_Simple(int period, int ii) { if (period != 0 && ii > period) { //stp.Start(); decimal summ = 0; for (int i = ii; i > ii – period; i–) { summ = summ + Data.Close[i]; } summ = summ / period; //stp.Stop(); //if (ii == […]

计算给定长度的所有可能子序列(C#)

如果我有一个如下序列(假设它是一个IEnumerable ): [A, B, C, D, E] 那么计算给定长度的所有可能(连续和非连续)子序列的最简洁方法是什么? 在结果集中对结果进行排序并不重要,但它不应包含重复项。 例如,如果我想计算长度为3的所有可能的子序列,结果集将是: [A, B, C] [A, B, D] [A, B, E] [A, C, D] [A, C, E] [A, D, E] [B, C, D] [B, C, E] [B, D, E] [C, D, E] 为了记录,下面接受的答案给了我一个很好的起点,这里的代码我已经更新,使用了一些新的.NET 3.5扩展方法: public static IEnumerable<IEnumerable> Subsequences( this IEnumerable source, int count) { if (count == […]

编程竞赛问题:计数多项式

请看我自己的答案,我想我做到了! 嗨, 编程竞赛的一个示例问题是编写一个程序,找出给定数量的gem可能有多少多边形。 所以对于两块石头( n = 2 ),只有一块多边形: XX 您可能认为这是第二种解决方案: X X 但事实并非如此。 如果您可以旋转多边形,则它们不是唯一的。 因此,对于4颗gem( n = 4 ),有7种解决方案: X X XX XXXX XX XX X XX XX XX XXX XX XX XX 应用程序必须能够找到1 <= n <=10的解决方案 PS:不允许在维基百科上使用polyominos列表 ;) 编辑:当然问题是:如何在Java,C / C ++,C#中做到这一点 我用Java开始这个项目。 但后来我不得不承认我不知道如何使用有效的算法构建多边形。 这是我到目前为止所做的: import java.util.ArrayList; import java.util.List; public class Main { private […]

三维空间中的曲线拟合点

试图找到有助于我们通过一系列点绘制3D线的函数。 对于我们知道的每个点:日期和时间,纬度,经度,海拔高度,速度和航向。 数据可能每10秒记录一次,我们希望能够猜测两者之间的点数,并将粒度增加到1秒。 从而在3D空间中创建虚拟飞行路径。 我发现了许多曲线拟合算法,这些算法将通过一系列点近似于一条直线,但它们不能保证这些点相交。 他们也没有考虑速度和航向来确定物体到达下一个点所采取的最可能路径。

在动态范围内查找局部最大值

在C#中工作,我需要在双精度列表中找到所有本地峰值,并将它们作为另一个列表双精度返回。 这看起来很简单,如果我在任何给定的“窗口”值中有一组我正在比较的值,但我需要能够将这个窗口大小实际传递给函数本身。 这可能令人困惑,但基本上我需要这样的东西: public List FindPeaks(List values, double rangeOfPeaks) 如果’rangeOfPeaks’为5,则将’current’值与其每一侧的2个值进行比较,以确定它是否为峰值。 如果’rangeOfPeaks’为11,则将当前值与每侧的5个值进行比较。 我认为这是一个非常基本的算法,但是,我找不到像这样检测峰值的任何好方法都没有成功。 有没有人曾经这样做过? 任何帮助都将不胜感激。 提前致谢!

TSP遗传算法中的交叉操作

我正试图用遗传算法解决旅行商问题(TSP) 我的基因组是图中顶点的排列(推销员的路径)。 我该怎样对基因组进行交叉操作? 我在哪里可以找到C#中我的问题的实现?

用于计算形成100的组合数的算法

我遇到了一个棘手的情况,我需要根据不同的因素来计算形成100的组合数。 那些是 组合数量 乘法因子 距离 样本输入1: (2-10-20) 它的意思是 列出有效的2路组合,形成100。 组合之间的距离应小于或等于20。 并且所有得到的组合必须能够被给定的乘法因子10整除 输出将是 [40,60] [50,50] [60,40] 这里[30,70],[20,60]无效,因为距离超过20。 样本输入2: [2-5-20] [40,60] [45,55] [50,50] [55,45] [60,40] 如果你引导我走向正确的方向,我将非常感激。 干杯。