草庐IT

algorithm

全部标签

java - 解析 Java 源代码

我被要求开发一个软件,该软件应该能够创建输入Java源代码的流程图/控制流。所以我开始研究它并得出以下解决方案:要创建流程图/控制流,我必须识别给定源代码中的控制语句和函数调用现在我有两种识别方法:通过编写我自己的语法来解析源代码(我认为这是一个复杂的解决方案)。我正在考虑为此使用Antlr。以文本形式读取输入源代码文件并搜索特定模式(可能会变得低效)我在这儿吗?或者我错过了一些非常基本和简单的东西?哪种方法会花费更少的时间并有效地完成工作?在这方面的任何其他建议也将受到欢迎。任何其他有效的方法都会有所帮助,因为输入的源代码可能跨越多个文件并且可能相当复杂。我擅长.NET语言,但这是我

java - 如何找到与特定值最接近的数组元素之和?

在Java中,我应该如何找到与特定值K最接近(或相等)的数组元素之和?例如,对于数组{19,23,41,5,40,36}和K=44,最接近的可能和是23+19=42。我已经为此苦苦挣扎了几个小时;我对动态规划几乎一无所知。顺便说一句,该数组只包含正数。 最佳答案 您通常会使用动态规划来解决此类问题。然而,这基本上归结为保留一组可能的总和并将输入值一个一个地相加,如以下代码所示,并且具有相同的渐近运行时间:O(nK),其中n是输入数组的大小,K是目标值。然而,下面版本中的常量可能更大,但我认为代码比动态编程版本更容易理解。public

java - 查找 BigInteger 是否为质数的最快算法?

这个问题在这里已经有了答案:Fastestprimalitytest(3个答案)关闭7年前。我正在编写一种检测BigInteger是否为素数的方法。我使用以下代码/算法来检查给定数字是否为质数。但是如果一个数字是10位长的话,这是非常慢的并且需要很长时间。publicbooleanreturnPrime(BigIntegertestNumber){intdivisorCounter=1;BigIntegerindex,i;for(index=newBigInteger("2");index.compareTo(testNumber)!=1;index=index.add(newBigI

java - 如何验证战舰字段?

我正在尝试验证battleship具有这些规则的字段:船舶不与边或角接触;船是直的;有1×4层甲板船、2×3层甲板船、3×2层甲板船、4×1层甲板船。该字段表示为byte[10][10]数组。我可以使用什么算法来完成这个?我使用的语言是Java,但任何语言都可以。 最佳答案 快速检查有效性:1×4甲板船、2×3甲板船、3×2甲板船、4×1甲板船必须恰好占用1*4+2*3+3*2+4*1=20个细胞。因此,如果您的字段不包含20个单元格,则它是无效的(船只重叠,或者船只数量不足)现在,您需要验证每种类型的船只的数量是否正确,并且船只不

java - 如何返回 Kadane 算法中的最大子数组?

publicclassKadane{doublemaxSubarray(double[]a){doublemax_so_far=0;doublemax_ending_here=0;for(inti=0;i上述代码返回最大子数组的和。我该如何返回具有最大总和的子数组? 最佳答案 像这样:publicclassKadane{double[]maxSubarray(double[]a){doublemax_so_far=0;doublemax_ending_here=0;intmax_start_index=0;intstartIndex

java - 算法或 SQL : to find where conditions for a set of columns which ensures result set has value in a particular column always > 0

我正在从事一个基于java-oracle的项目,在这个项目中我遇到了一个问题,在我看来这个问题需要一个分析解决方案。我正在寻找基于SQL查询或任何算法或任何免费分析工具的解决方案,我可以按照这些工具获得所需的结果。问题陈述:假设我有下面的表,其中A-D列和最后一列作为Score,我想为每个列找到一个值标准,当在SQLwhere子句中组合时,该标准将始终为Score列提供正值。那么基本上A-D列的哪种组合总能给我正分?columnA|columnB|columnC|columnD|Score140103-200402310010332011533-501022-1501563-10上述数

java - 在二叉树中找到一个值避免计算器异常

我试图在二叉树中找到一个值并返回具有我要查找的值的节点。我做了一个算法,当值不在树的很深层次时效果很好,但是当值在很深的位置时,我得到一个java.lang.StackOverflowError。这是我的代码:classNope{Nopeleft,right;intvalue;publicNopefind(intv){if(v>this.value&&this.right!=null)returnright.find(v);if(v任何人都可以建议我解决这个问题(我听说过尾优化递归之类的东西)但我不确定它是否适用于Java。 最佳答案

java - 一种半随机排序算法(Java)

我正在制作一款回合制RPG游戏,我的方法是按照所有“Actor”对象的攻击顺序对它们进行排序,这完全是随机的。但是,我想改进这种方法,以便每个Actor都拥有的“敏捷性”统计数据能够改善他们的滚动。我查看了Collections类和Arrays中的几种方法,但似乎没有找到任何符合我要求的方法。现在,我正在考虑获取1到100之间的随机整数,并让敏捷分数提高几率。我为整数和HashMap尝试了单独的ArrayLists...但是不行。我现在的方法://getFriendlies(),getHostiles(),andattack_orderareallArrayListspublicvoi

java - 为什么在 Java 中对列表进行 binarySearch?

鉴于列表已排序,我不确定为什么作为通用数据结构的列表应该具有二进制搜索算法。接受索引的get方法不是按顺序遍历列表吗,至少对于List的子类型LinkedList是这样?如果是这样,与LinkedList的顺序比较相比,我看不出使用binarySearch有任何优势。当然,除非我们将List限制为ArrayList,否则我们可以更有信心地进行binarySearch。我的理解对吗?谢谢。 最佳答案 有很多方法可以实现List。标准Java库中有ArrayList、LinkedList、CopyOnWriteArrayList等,除此

java - HashSet 上的迭代成本还取决于支持映射的容量吗?

来自HashSet的JavaDocs:Thisclassoffersconstanttimeperformanceforthebasicoperations(add,remove,containsandsize),assumingthehashfunctiondispersestheelementsproperlyamongthebuckets.IteratingoverthissetrequirestimeproportionaltothesumoftheHashSetinstance'ssize(thenumberofelements)plusthe"capacity"oftheb