Tag: 算法

在数组中查找重叠数据

我们正在编写一个C#应用程序,它将帮助删除不必要的数据中继器。 转发器只能在其接收的所有数据都被其他转发器接收的情况下被移除。 下面将解释我们作为第一步所需要的: 例如,我有int数组的集合 一个。 {1,2,3,4,5} 湾 {2,4,6,7} C。 {1,3,5,8,11,100} 它可能是数千个这样的arrays。 我需要找到可以删除的数组。 只有在其所有数字都包含在其他数组中的情况下,才能删除数组。 在上面的示例中,可以删除数组a,因为数字2和4在数组b中 ,数字1,3,5在数组c中 。 做这种手术的最佳方法是什么?

C#:从cetain日期添加工作日

我这样做很麻烦。 我正在创建一个在特定日期添加工作日的方法。 例如,我想在2010年9月15日(星期三)之前增加3个工作日,该方法将于9月20日(下周一周一)返回。 它无视周六和周日,因为它非工作日.. 在C#中有类似的东西: DateTime AddWorkingDays(DateTime specificDate, int workingDaysToAdd) { return specificDate + (workingDaysToAdd – (all saturdays and sundays)) } 我不考虑计算的特殊假期,我只是想在星期六和星期日之外添加日子..提前谢谢! =)

背包 – 蛮力算法

我发现这个代码使用powershell机制来解决背包问题(这主要是为了学习,所以不需要指出动态更有效)。 我让代码工作,并了解其中的大部分内容。 最。 这是问题: 我注意到这两个条件,我不知道它们是如何工作的以及为什么它们在代码中 – 我知道它们是至关重要的,因为我所做的任何改变都会导致算法产生错误的结果: // if bit not included then skip if (((i >> j) & 1) != 1) continue; // if bit match then add if (((bestPosition >> j) & 1) == 1) { include.Add(Items[j]); } 这是整个class级,以及我从主要方式调用它的方式: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace KnapSack2 { class BruteForce { […]

C#中的标准正态分布z值函数

我一直在看Jeff Atwood最近关于Alternate Sorting Orders的博客文章。 我试图将post中的代码转换为C#,但我遇到了一个问题。 我知道.NET中没有函数会返回z值,给定标准法线曲线下面积的百分比。 用于算法的建议值为95%和97.5%,您可以在任何统计手册的z值表中查找。 有没有人知道如何为z的所有值或至少与平均值的6个标准差实现这样的函数。 一种方法是将值硬编码到字典中并使用查找,但必须有一种计算确切值的方法。 我尝试解决这个问题的方法是采用标准正态曲线函数的定积分。 y =(1 /(sqrt(2 * PI)))* e ^( – (1/2)* x ^ 2) 这给了我两个x值之间的曲线区域,但后来我被卡住了…也许我是基础的方式,这不是你怎么做的? 谢谢。

当生产function可以有数百万个测试用例时,TDD如何工作?

在TDD中,您选择一个测试用例并实现该测试用例然后您编写足够的生产代码以便测试通过,重构代码并再次选择一个新的测试用例并继续循环。 我在这个过程中遇到的问题是TDD说你只编写了足够的代码来传递刚才写的测试。 我所指的确切地说,如果一个方法可以有100万个测试用例,你能做什么?! 显然没有写100万个测试用例?! 让我通过下面的例子更清楚地解释一下我的意思: internal static List GetPrimeFactors(ulong number) { var result = new List(); while (number % 2 == 0) { result.Add(2); number = number / 2; } var divisor = 3; while (divisor <= number) { if (number % divisor == 0) { result.Add(divisor); number = number / divisor; } else { […]

查找某公历年中国新年公历的算法

我正在制作一个驱动程序来计算给定时间跨度内的各种假期。 所以,我需要找到所有中国假期(中国新年,清明节,端午节等)的格里高利日。 我使用着名的“复活节算法”进行耶稣受难日,复活节星期一,耶稣升天节和惠特星期一计算; 但是,我不太了解它以适应中国历法。 我发现了类似的问题,但他们经常从格里高利到中国人: 月球/月相算法 计算python中的月球/阴阳假期 http://www.herongyang.com/year/program.html http://www.hermetic.ch/cal_stud/ch_year.htm 最后一个链接非常有用,但我仍然不确定如何以一种可以帮助我的方式实现该算法。 任何建议或代码将不胜感激! 这是我的耶稣受难日算法: private void GetGoodFridayOccurances(DateTime startDate, DateTime endDate, List observedHolidays, StandardHoliday holiday) { for (DateTime date = startDate; date 10) tA = tA – 1; //Find next sunday int tB = (tA – 19) % 7; int tC = (40 – firstTwo) % 4; if […]

平均函数没有溢出exception

.NET Framework 3.5。 我试图计算一些相当大的数字的平均值。 例如: using System; using System.Linq; class Program { static void Main(string[] args) { var items = new long[] { long.MaxValue – 100, long.MaxValue – 200, long.MaxValue – 300 }; try { var avg = items.Average(); Console.WriteLine(avg); } catch (OverflowException ex) { Console.WriteLine(“can’t calculate that!”); } Console.ReadLine(); } } 显然,数学结果是9223372036854775607( long.MaxValue – […]

实现Bentley-Ottmann算法

我在C#中正确实现Bentley-Ottmann算法时遇到了一些麻烦。 我试图根据伪代码在这里实现它。 我在下面发布了我的主要代码。 假设我的BST和PriorityQueue类正确实现,您是否看到代码有任何问题? 没有错误,但并非找到所有交叉点,只有一些。 我的猜测是代码的else部分存在错误(当前事件是交叉点时)。 我不确定伪代码是什么意思通过交换BST中两个段的位置。 我这样做的方式很好吗? 因为最终,两者在BST中并没有真正交换。 我也不能改变他们的立场,因为这可能打破BST属性。 另外,我是否正确地假设它们的左端点的Y坐标在BST中排序? 我注意到我无法追踪的另一个错误是有时点(0, 0)进入eventList 。 (0, 0)由Geometry.Intersects输出,以防没有交集,但在这种情况下, if条件应该阻止它被添加。 我不知道它是如何进入的。如果我在添加一个点后打印eventList的内容, (0, 0)永远不会显示。 如果我在提取并弹出元素后打印内容(0, 0)有时会显示(0, 0) 。 这可能与Pop()方法搞乱引用有关,还是我的PriorityQueue实现中肯定是一个问题? 如果需要,我也可以显示我的BST和优先级队列的实现。 static class BentleyOttman { private static void AddIntersectionEvent(PriorityQueue eventList, Segment segEv, Segment segA, SegPoint i) { i.IntersectingSegments = new Tuple(segEv, segA); i.Type = SegmentPointType.IntersectionPoint; eventList.Add(i); } public static void […]

算法帮助! 使用其伙伴搜索字符串的快速算法

我正在寻找一个快速的搜索目的算法用于一个巨大的字符串(它是一个由数亿到数十亿个字符组成的生物基因组序列)。 此字符串中只有4个字符{A,C,G,T},“A”只能与“T”配对,而“C”与“G”配对。 现在我正在寻找两个子串({minLen,maxLen}之间的子串的长度约束,以及{intervalMinLen,intervalMaxLen}之间的间隔长度),它们可以反平行地相互配对。 例如,字符串是:ATCAG GACCA TACGC CTGAT 约束:minLen = 4,maxLen = 5,intervalMinLen = 9,intervalMaxLen = 10 结果应该是 “ATCAG”配对“CTGAT” “TCAG”配对“CTGA” 提前致谢。 更新:我已经有了确定两个字符串是否可以相互配对的方法。 唯一的问题是进行详尽的搜索是非常耗时的。

使用Linq和C#创建列表中项目的所有可能组合

我有一个类别表: Catid | Desciption 1 | Color 2 | Size 3 | Material 和一个类别项目表 Catid | Name 1 | Red 1 | Blue 1 | Green 2 | Small 2 | Med 2 l Large 3 | Cotton 3 | Silk 我需要遍历所有项目并将其显示在这样的标签中: Red Small Cotton Red Small Silk Red Med Cotton Red Med Silk Red […]