Tag: 算法

数组中K个元素的总和等于N.

给定一个数组说nums = {1,2,5,3,6,-1,-2,10,11,12},使用max no of elements(比如maxNums = 3)找到其总和的元素(比如sum = 10)= K. 所以如果要使用maxNums = 3求和= 10则答案是 {1 3 6} {1 -1 10} {1 -2 11} {2 5 3} {2 -2 10} {5 6 -1} {-1 11} {-2 12} {10} 我写了一个递归函数来完成这项工作。 如果没有递归,我该怎么做? 和/或内存较少? class Program { static Int32[] nums = { 1,2,5,3,6,-1,-2,10,11,12}; static Int32 sum = 10; […]

从源字符串中查找多个索引

基本上我需要做String.IndexOf(),我需要从源字符串中获取索引数组。 有没有简单的方法来获取索引数组? 在提出这个问题之前,我已经搜索了很多,但还没有找到解决这个简单问题的简单解决方案。

计算在给定时间段内的正常工作日

需要一些帮助。 我需要计算一个特定日期的正常工作日,例如,在我们国家,我们星期一到星期五有5个正常工作日,然后在代码中我需要排除星期六和星期日,当我在我的计算中使用它时。 我需要在C#中使用类似的算法: int GetRegularWorkingDays(DateTime startDate, DateTime endDate) { int nonWorkingDays = ((endDate – startDate) % 7) * 2; return (endDate – startDate) – nonWorkingDays; } 我知道我的选秀很开心:(。提前致谢。=) PS:伙计们请在下面投票选出最好/最快/最有效的答案。 谢谢=)

Zhang-Suen细化算法C#

我正在尝试按照本指南在C#中编写Zhang-Suen细化算法,而不处理边距。 在函数’zhangsuen’中,我正在从图像’imgUndo’中读取并写入图像’img’。 for循环内的指针dataPtrOrigin_aux用于读取3×3窗口内的9个像素,这样dataPtrOrigin_aux5就是该窗口的中心像素,该窗口将沿着整个图像移动,从左到右,从上到下移动。 在每个像素中,如果validation语句是否为真,则在由指针dataPtrFinal写入的图像中进行相应的改变。 请注意,我将当前像素的邻居存储在8个元素数组中。 因此,它们将按照以下顺序存储: internal static void zhangsuen(Image img, Image imgUndo) { unsafe { MIplImage m = img.MIplImage; //Image to be written. MIplImage mUndo = imgUndo.MIplImage; //Image to be read. byte* dataPtrFinal = (byte*)m.imageData.ToPointer(); byte* dataPtrUndo = (byte*)mUndo.imageData.ToPointer(); int width = img.Width; //Width of the image. int height = img.Height; //Height of the […]

比较字符串与几个不同的字符串

我想比较一个字符串和许多字符串。 如何在C#中完成?

以编程方式在C#中生成决策表?

我有这种情况,我需要让用户根据给定条件的数量来定义决策。 例如,假设有两个条件(IsMale和IsSmoker),我的程序需要自动生成如下的矩阵: IsMale: YES YES NO NO IsSmoker: YES NO YES NO 并且deicsion由用户定义,因此以下任何一个都是有效的: IsMale: YES YES NO NO IsSmoker: YES NO YES NO Decision: TFTF IsMale: YES YES NO NO IsSmoker: YES NO YES NO Decision: FFFF IsMale: YES YES NO NO IsSmoker: YES NO YES NO Decision: TTTT 对于每个条件,只能有两种状态, True和False 。 所以组合的总数计算如下: 没有可能的状态(S)到无条件的幂(C) S […]

任意分隔符/转义字符处理的最佳算法是什么?

我有点惊讶的是网上没有关于此的信息,我一直发现这个问题比我想象的要有点棘手。 这是规则: 您将从分隔/转义数据开始拆分为数组。 分隔符是一个任意字符 转义字符是一个任意字符 分隔符和转义字符都可能出现在数据中 正则表达式很好,但性能最好的解决方案是最好的 编辑:可以忽略空元素(包括前导或结尾分隔符) 代码签名(基本上是C#) public static string[] smartSplit( string delimitedData, char delimiter, char escape) {} 问题中最棘手的部分是转义的连续转义字符大小写,当然,因为(调用/转义字符和分隔符):////////,= ////, 我错过了某个地方,这是在网上还是在另一个SO问题上处理的? 如果没有,那就把你的大脑投入工作……我认为这个问题对于公益事业来说是件好事。 我自己正在研究它,但还没有一个好的解决方案。

计算二项式系数的算法

我需要一种计算组合的方法,而不会耗尽内存。 这是我到目前为止所拥有的。 public static long combination(long n, long k) // nCk { return (divideFactorials(factorial(n), ((factorial(k) * factorial((n – k)))))); } public static long factorial(long n) { long result; if (n <= 1) return 1; result = factorial(n – 1) * n; return result; } public static long divideFactorials(long numerator, long denominator) { return factorial(Math.Abs((numerator – […]

n点与最佳拟合曲线的近似

我有一个n点(2D)列表:P1(x0,y0),P2(x1,y1),P3(x2,y2)…点满足每个点都有唯一坐标的条件,以及每个点的坐标xi ,yi> 0和xi,yi是整数。 任务是编写一个算法来近似这些点 到曲线y = | Acos (Bx) | y = | Acos (Bx) | 最合适(接近或等于100%) 因此系数A和B尽可能简单。 我想用C#编写一个程序,但对我来说最大的问题是找到合适的算法。 有没有人可以帮我这个?

适用于所有匹配的Boyer-Moore-Horspool算法(在字节数组中查找字节数组)

这是我对BMH算法的实现(它就像一个魅力): public static Int64 IndexOf(this Byte[] value, Byte[] pattern) { if (value == null) throw new ArgumentNullException(“value”); if (pattern == null) throw new ArgumentNullException(“pattern”); Int64 valueLength = value.LongLength; Int64 patternLength = pattern.LongLength; if ((valueLength == 0) || (patternLength == 0) || (patternLength > valueLength)) return -1; Int64[] badCharacters = new Int64[256]; for (Int64 i = […]