Tag: algorithm

对链表进行排序

我在C#中编写了一个基本的链表类。 它有一个Node对象,它(显然)代表列表中的每个节点。 代码不使用IEnumerable,但是,我可以实现排序function吗? 我使用的语言是C#。 在C#中有这样的例子吗? 我正在使用这个样本 : 谢谢

Shunting-Yardvalidation表达式

我们使用Shunting-Yard算法来计算表达式。 我们可以通过简单地应用算法来validation表达式。 如果缺少操作数,错过匹配的括号和其他内容,它将失败。 然而,Shunting-Yard算法具有比人类可读中缀更大的支持语法。 例如, 1 + 2 + 1 2 1 2 + 是提供“1 + 2”作为Shunting-Yard算法输入的可接受方法。 ‘+ 1 2’和’1 2 +’不是有效的中缀,但标准的Shunting-Yard算法可以处理它们。 该算法并不真正关心顺序,它通过优先顺序抓取“最近”的操作数来应用运算符。 我们希望将输入限制为有效的人类可读中缀。 我正在寻找一种方法来修改Shunting-Yard算法以使用无效的中缀失败,或者在使用Shunting-Yard之前提供中缀validation。 有人知道任何已发表的技术吗? 我们必须支持基本运算符,自定义运算符,括号和函数(带有多个参数)。 我没有看到任何与在线基本操作员相关的东西。 谢谢

C#:如何制作阿特金增量筛选

我不知道这是否可能,但我只想问。 我的数学和算法技能在这里让我失望:P 问题是我现在有这个类产生的素数达到一定限度: public class Atkin : IEnumerable { private readonly List primes; private readonly ulong limit; public Atkin(ulong limit) { this.limit = limit; primes = new List(); } private void FindPrimes() { var isPrime = new bool[limit + 1]; var sqrt = Math.Sqrt(limit); for (ulong x = 1; x <= sqrt; x++) for (ulong […]

子集和问题

我有一个计数问题,这是这个问题的延续。 我不是一个真正的数学家,所以我很难找出这个被称为分辨率的subset sum problem 。 我有4个ArrayList ,其中包含数据:alId,alTransaction,alNumber,alPrice 输入| 交易| 号码| 价钱 8 | 买| 95.00000000 | 305.00000000 8 | 买| 126.00000000 | 305.00000000 8 | 买| 93.00000000 | 306.00000000 8 | 转出| 221.00000000 | 305.00000000 8 | 转入| 221.00000000 | 305.00000000 8 | 卖| 93.00000000 | 360.00000000 8 | 卖| 95.00000000 | 360.00000000 8 | […]

LINQ找到一系列连续数字

我有一个整数列表。 我想在该列表中找到所有连续数字的运行,由起始索引和长度定义。 因此,例如,对于[1,2,3,5,7,8]输入列表,输出将是[{1,3}, {5,1}, {7,2}] 。 这很容易使用循环,像这样(未经测试的伪代码): for(i=1, i < maxNum; i++) { number = list[i]; previousNumber = list[i-1]; if(number – previousNumber == 1) { runLength++; } else { result.Add(startingNumber, runLength); runLength = 1; startingNumber = number; } } 但我认为可以使用LINQ。 任何想法如何做到这一点?

DirectoryInfo.EnumerateFiles(…)导致UnauthorizedAccessException(和其他exception)

我最近需要枚举整个文件系统,以查找特定类型的文件以进行审计。 由于对要扫描的文件系统的权限有限,这导致我遇到几个例外。 其中,最流行的是UnauthorizedAccessException以及我的懊恼, PathTooLongException 。 这些通常不是问题,除了它们使IEnumerable无效,使我无法完成扫描。

使用密钥的可逆混洗算法

如何在C#中编写可逆混洗算法,该算法使用密钥进行混洗并可以反转为原始状态? 例如,我有一个字符串:“Hello world”,我怎么能将它洗牌以便以后我能够将洗牌后的字符串反转回“Hello world”。

良好的GetHashCode()覆盖了尊重订单的Foo对象列表

EnumerableObject : IEnumerable 包装List 如果EnumerableObject a.SequenceEquals( EnumerableObject b) ,那么它们是相等的。 因此,必须实现GetHashCode 。 问题是XORing列表中的每个元素将返回具有所有且仅相同元素的任何列表的相同哈希码,而不管顺序如何。 就工作而言,这是好的,但会导致许多冲突,这将减慢检索速度等。 对于依赖于顺序的对象列表,什么是好的,快速的GetHashCode方法?