草庐IT

algorithm

全部标签

c# - 如何枚举 x^2 + y^2 = z^2 - 1(有附加约束)

让我们N是一个数字(10.我必须把它分成3个数字(x,y,z)这样它就可以验证以下条件。1.x我必须找出我可以从一个方法中的给定数字中得到多少组合。我已经尝试如下,但是它花费了很多时间来获得更高的数字并导致超时..intN=Int32.Parse(Console.ReadLine());Listres=newList();//x我的问题:我的解决方案是花时间获得更大的数字(我认为这是for循环),我该如何改进它?是否有更好的方法? 最佳答案 这里有一个枚举三元组的方法,而不是详尽地测试它们,使用这里描述的数论:https://mat

c# - 从大小为 n 的列表中查找哪些数字与另一个数字相加的算法

我有一个十进制数(我们称之为目标)和一个由其他十进制数组成的数组(我们称之为数组元素),我需要找到所有组合来自元素的总和为目标的数字。我更喜欢C#(.Net2.0)中的解决方案,但不管怎样,最好的算法都可能获胜。您的方法签名可能类似于:publicdecimal[][]Solve(decimalgoal,decimal[]elements) 最佳答案 有趣的答案。感谢您对维基百科的指点-虽然很有趣-他们实际上并没有解决我正在寻找完全匹配的问题-更多的是会计/账簿平衡问题,而不是传统的装箱/背包问题。我一直很感兴趣地关注堆栈溢出的发展

c# - 实心圆的中点圆算法

Midpointcirclealgorithm可用于栅格化圆的边界。但是,我希望圆圈被填充,而不是多次绘制像素(这很重要)。这个答案提供了一个生成实心圆的算法的修改,但是一些像素被访问了几次:fastalgorithmfordrawingfilledcircles?问:如何在不多次绘制像素的情况下光栅化一个圆?请注意,RAM非常有限!更新:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceCircleTest{classProgram{staticvoidMain

c# - TSP遗传算法中的交叉操作

我正在尝试解决TravellingSalesmanProblem(TSP)与Geneticalgorithm.我的基因组是图中顶点的排列(推销员的路径)。我应该如何对我的基因组进行交叉操作?在哪里可以找到我的问题在C#中的实现? 最佳答案 您应该查看GokturkUcoluk的“GeneticAlgorithmSolutionoftheTSPAvoidingSpecialCrossoverandMutation”。它概述了用于排列的特殊交叉运算符,并提出了一种巧妙的排列表示形式,可以很好地与标准交叉配合使用(即交叉两个排列总是产生两

c# - 如何在 WPF Canvas 上绘制网格线?

我需要在WPF中的Canvas上构建函数绘制网格线:voidDrawGridLine(doublestartX,doublestartY,doublestepX,doublestepY,doubleslop,doublewidth,doubleheight){//Howtoimplementdrawgridlinehere?}我该怎么做? 最佳答案 您实际上不必使用WPF“绘制”任何东西。如果要绘制线条,请使用适当的几何图形来绘制它们。在您的情况下,它可能真的很简单。您只是在绘制一个网格,因此您可以创建一个DrawingBrush来

c# - 运行时如何生成随机数?

由于计算机无法选择随机数(它们可以吗?)这个随机数实际上是如何生成的。例如在C#中我们说,Random.Next()里面发生了什么? 最佳答案 您可以结帐thisarticle.根据documentation.NET中使用的具体实现基于DonaldE.Knuth的减法随机数生成器算法。有关详细信息,请参阅D.E.Knuth."TheArtofComputerProgramming,volume2:SeminumericalAlgorithms".Addison-Wesley,Reading,MA,secondedition,1981

c# - 创建序列的幂集

我正在尝试创建一个程序,该程序是创建序列、字符串或数字的可能组合的基础。这是某种加密/解密程序。我正在使用VisualStudio2013和C#。我想做的是从序列中生成幂集,但我有点困惑,无法继续进行。这是代码。publicstaticvoidrandomSeq(){inttemp=0;stringseq="1234";varsb=newStringBuilder();char[]bits=seq.Select((charc)=>c).ToArray();Console.Write("GivenSequence:");Console.Write(seq);Console.WriteLi

c# - 在两个大数之间获得素数的高效算法

我是C#的初学者,我正在尝试编写一个应用程序来获取用户输入的两个数字之间的素数。问题是:在大数(有效数在1到1000000000范围内)获取素数需要很长时间,根据我要解决的问题,整个操作必须在一个小的时间间隔内进行。这是更多解释的问题链接:SPOJ-Prime这是我的代码中负责获取质数的部分:publicvoidGetPrime(){intL1=int.Parse(Limits[0]);intL2=int.Parse(Limits[1]);if(L1==1){L1++;}for(inti=L1;i有没有更快的算法?提前致谢。 最佳答案

c# - 如何将数字反转为整数而不是字符串?

我遇到了一个问题“如何将数字反转为整数而不是字符串?”谁能帮我找出答案?反转应该反转数字的小数位,即使用基数10。 最佳答案 是这样的吗?publicintReverseInt(intnum){intresult=0;while(num>0){result=result*10+num%10;num/=10;}returnresult;}作为一个hackishone-liner(更新:使用Benjamin的评论来缩短它):num.ToString().Reverse().Aggregate(0,(b,x)=>10*b+x-'0');更

c# - 寻找如何重构我的算法的想法

我正在尝试自己编写GameofLife,有我自己的一套规则。我想应用的第一个“概念”是社会化(这基本上意味着细胞是想独处还是想与其他细胞成群结队)。数据结构是二维数组(目前)。为了能够将一个单元格移动到/远离一组其他单元格,我需要确定将它移动到哪里。这个想法是,我评估该区域(邻居)中的所有单元格并获得一个向量,它告诉我将单元格移动到哪里。向量的大小为0或1(不移动或移动),角度为方向数组(上、下、右、左)。这是一张表示细胞受力的图像,就像我想象的那样(但范围可能超过5):让我们以这张照片为例:Forcesfromlowerleftneighbour:down(0),up(2),righ