草庐IT

algorithm

全部标签

c# - 使用 DateTime.Now.Ticks 生成唯一的数字 ID

我需要生成一个唯一的数字ID以附加到传入请求。此ID仅临时用于跟踪请求,一旦请求完成处理将被丢弃。此ID将仅在该应用程序的上下文中使用,但需要以高性能多线程方式分配。我正在考虑将DateTime.Now.Ticks用于此ID,但想知道如果同时处理同时请求,DateTime.Now.Ticks是否仍会生成冲突ID?如果有人可以建议一种在多线程环境中生成这些ID的更好方法(最好是不是像Tick那样的Int64的方法),请告诉我。像递增数字这样简单的东西就足够了,只要我不必在递增之前锁定数字即可。 最佳答案 您只需要使用一个静态变量,每次

c# - 检查字符串是否有平衡括号

我正在阅读算法设计手册第二版,这是一道练习题。引用问题Acommonproblemforcompilersandtexteditorsisdeterminingwhethertheparenthesesinastringarebalancedandproperlynested.Forexample,thestring((())())()containsproperlynestedpairsofparentheses,whichthestrings)()(and())donot.Giveanalgorithmthatreturnstrueifastringcontainsproperly

C# CRC 实现

我正在尝试将串行端口设备集成到我的应用程序中,它需要对我发送给它的字节进行CRC-CCTT验证。我对管理字节数据包有点陌生,需要帮助。它使用此公式进行CRC演算:[CRC-CCITTP(X)=X16+C12+C8+1]例如,对于数据包:0xFC0x050x11,CRC为0x5627。然后我将这个数据包发送到设备:0xFC0x050x110x270x56此外,数据包长度将从5到255不等(包括CRC校验字节)我不知道如何实现这个,所以欢迎任何想法/建议。希望我说清楚了,提前致谢。编辑:这是我需要做的规范: 最佳答案 标准的crc-cc

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

计算简单移动平均线最快的库/算法是什么?我自己写的,但在330000项十进制数据集上花费的时间太长。周期/时间(毫秒)20/300;60/1500;120/3500。这是我的方法的代码:publicdecimalMA_Simple(intperiod,intii){if(period!=0&&ii>period){//stp.Start();decimalsumm=0;for(inti=ii;i>ii-period;i--){summ=summ+Data.Close[i];}summ=summ/period;//stp.Stop();//if(ii==1500)System.Windo

c# - 一组超过 2 个整数的最大公约数

StackOverflow上有几个问题讨论如何找到两个值的最大公约数。一个好的答案显示了一个整洁的recursivefunction来做到这一点。但是如何找到一组超过2个整数的GCD?我似乎找不到这方面的例子。谁能推荐最有效的代码来实现这个功能?staticintGCD(int[]IntegerSet){//whatgoeshere?} 最佳答案 这里有使用链接问题中的LINQ和GCD方法的代码示例。它使用其他答案中描述的理论算法......GCD(a,b,c)=GCD(GCD(a,b),c)staticintGCD(int[]nu

c# - 从顶点组合中找到最小的不规则多边形(性能关键)

我需要在二维平面上的几个顶点中找到一个表面积最小的不规则多边形。不,这不是家庭作业。虽然我希望我现在回到学校。对于如何构建多边形有一些要求。假设我在8x8网格上绘制了3种不同类型的顶点(红色、绿色、蓝色)。我需要扫描此网格中满足红、绿、蓝组合要求的所有顶点,并选择表面积最小的顶点。获取不规则多边形的表面积非常简单。我主要关心的是高效扫描所有可能组合的性能。有关示例,请参见下图。所有三种类型都用于制作多边形,但圈出的一种具有最小的表面积,这是我的目标。与我尝试制作的原型(prototype)相比,这个场景得到了简化。多边形将由数十个(如果不是数百个)顶点构成,并且网格将大得多。此外,这将

c# - 尝试优化模糊匹配

我有2,500,000个产品名称,我想尝试将它们组合在一起,即找到名称相似的产品。例如,我可以拥有三种产品:亨氏焗bean400g;HzBkdbean400g;亨氏bean400克。它们实际上是相同的产品,可以合并在一起。我的计划是使用Jaro–Winklerdistance的实现查找匹配项。该过程如下:列出内存中所有产品名称的大列表;选择列表中的第一个产品;将其与列表中紧随其后的每个产品进行比较并计算“Jaro分数”;任何匹配度高(比如0.95f或更高)的产品都会被报告;转到下一个产品。所以这有一些优化,因为它只以一种方式匹配每个产品,节省了一半的处理时间。我对此进行了编码并进行了测

c# - 绘制有向无环图 : Minimizing edge crossing?

如果没有像EfficientSugiyama这样的图形绘制算法,以树形式布置DAG中的顶点(即顶部没有内边的顶点,仅依赖于下一层的顶点等)是相当简单的。但是,是否有一种简单的算法可以最大限度地减少边缘交叉?(对于某些图,可能无法完全消除边缘交叉。)一张图说一千个字,那么有没有一种算法会建议somethingwithoutcrossingedges.(comparedtothis)。编辑:结果我已经接受了Senthil的建议graphviz/dot——快速浏览一下文档确认这很容易useitasalibraryorexternaltool,和theoutputformatissurpris

c# - USB显微镜的自动对焦算法

我正在尝试为低成本USB显微镜设计自动对焦系统。我一直在开发硬件方面的精密PAP电机,它能够调节microscope中的聚焦旋钮。,现在我处于困难的部分。我一直在思考如何实现这个软件。硬件有两个USB端口,一个用于显微镜相机,另一个用于电机。我最初的想法是用C#编写一个应用程序,它能够从显微镜获取图像并前后移动电机,到目前为止一切顺利:)现在我需要一些关于自动对焦的帮助,如何实现它?有什么好的算法吗?或者可能是一个可以帮助我完成任务的图像处理库?我一直在谷歌搜索,但没有成功...我将不胜感激任何帮助/想法/建议!非常感谢:)编辑:谢谢你们的回答,我会尝试所有的选项并返回这里返回结果(或

c# - 算法挑战 : merging date range

我遇到了一个有趣的问题:我有几个可以重叠的日期范围他们每个人都有一个名字是否可以“消除重叠”这些范围?即生成:一组新的范围,其中没有一个与其他范围重叠每个新范围都有相应名称的列表也许我可以让它更形象一些。这是我首先拥有的:a|------------------------------|b|-------------------|c|-----------------|这是我想要得到的:|------|---------|-------|-----|-----|aa,ca,b,ca,bb我找到了一种可行但不够优雅的解决方案:我将每个范围(从、到)转换为天数列表(d1、d2、d3等)我按