我一直想这样做,但是每当我开始思考这个问题时,由于它的指数性质,它令我震惊。 我想能够理解和编写的问题解决程序是针对倒数数学问题的: 给定数字X1到X5的集合,计算如何使用数学运算将它们组合以使Y。您可以应用乘法,除法,加法和减法。 那么1,3,7,6,8,3如何构成348? 答案:(((8 * 7) + 3) -1) *6 = 348。 如何编写可以解决此问题的算法?尝试解决此类问题时从哪里开始?设计这样的算法时,您需要考虑哪些重要的考虑因素? 解决方案如下: Java中非常快速且肮脏的解决方案: public …

2020年11月15日 0条评论 20点热度 阅读全文

所以我有以下问题: Given a grid of x by y dimensions, calculate the number of routes through it that start in one corner (let's say top left) and end in another (bottom right) and pass through every vertex. 因此,我目前的方法只是通过尝试所有可能的路径并计算到达终点并遍历每个节点的路径来强制执行。当它起作用时,它的值为O(n ^ …

2020年11月14日 0条评论 8点热度 阅读全文

假设我有一个1D游戏网格,如下所示: 例如,在27以南的像元将是35,而在59以南的像元将是3(由于环绕)。可以这样实现: var s = spot = 59 var r = row length = 8 var b = board size = 64 var south = (s+r) mod b 好的,现在让我们尝试在另一个单元的东边找到该单元。 27以东的像元是28,而31以东的像元是24(也是由于环绕)。我能想到的最好的办法是: var s = spot = 31 var r = row length = …

2020年11月12日 0条评论 25点热度 阅读全文

This question already has answers here: Sort on a string that may contain a number (23个答案) 3年前关闭。 我想要某种保留自然排序order1的字符串比较功能。 Java内置了类似的东西吗?我在 String class中找不到任何内容,而 Comparator class仅知道两种实现。 我可以自己动手(这不是一个很困难的问题),但是我宁愿不要重新发明轮子。 在我的特定情况下,我有要排序的软件版本字符串。因此,我希望“1.2.…

2020年11月11日 0条评论 30点热度 阅读全文

重新开始解决UVa问题,以此作为打发时间的方式(在6周内上阵)。我喜欢编写Java,但是最终使用C / C++。并不是因为IO更快,不需要装箱数据,更多内存或使用无符号,因为它的算法效率至关重要。 简而言之,我接下来将逐步构建如何为不同类别的有效算法和dp创建文章/代码库。 引用马克·吐温(Mark Twain):不是您所不知道的会惹上麻烦。您肯定会知道,事实并非如此。 我协助构建优先级列表,必须具备有效算法。 解决方案如下: 关于Dynamic Programming的维基百科文章有一个名为“Algorithms…

2020年11月11日 0条评论 14点热度 阅读全文

我看到了一个面试问题,如下所示: 数组中的一个数字重复。查找 简单的解决方法如下: for(int i=0;i<n;i++){ { dup = false; for(j=0;j<n;j++){ if(i!=j && a[i]= a[j]){ dup = true; } if(dup == true) return a[i] } } 但是我想在O(n log(n))和O(n)时间内实现它。我该怎么做? 解决方案如下: 对数组进行排序(可以在第一个O(n Log n)中完成,然后只需要对相邻…

2020年11月10日 0条评论 6点热度 阅读全文

我已经读过,每个非平凡的SCC都是一个循环,这意味着在CPM/PERT方法中使用的图中不应该有任何,但是在我读了其他一些东西之后,我有点困惑:(我真的需要帮助!是否允许在CPM/PERT中的图表中强连接组件? ===========解决方案如下: PERT图显示一个要采取的行动的部分排序,所以他们不能有个周期。如果一个周期将出席这将意味着,铁,你需要开始一个活动,然后做B,然后C,然后A再次 - 这是没有意义的。也许这会更容易回答,如果你提供一个链接到内容,让你感到困惑。评论): 每个SCC都必须包含循环。证明草图…

2020年11月7日 0条评论 40点热度 阅读全文

我要完成的背景/目标: 我正在尝试从头开始用Java实现快速取幂算法(按惯例)。算法如下(说明来自johndcook.com): 输入:基数b,指数n。 用二进制写指数n。从左数第二位开始,从左至右读取二进制表示形式。以数字a开头,每当您读取0时,请将所获得的值平方。每次您读取1位数时,请将所获得的值平方并乘以a。因此,可以使用不超过2个log2(n)乘法来计算an。 我不是在寻找一种更好的方法来实现此算法,而是为什么我会遇到此特定错误。 问题是 我尝试使用Java中的递归lambda实现此算法,而当我去运行该程序…

2020年11月7日 0条评论 17点热度 阅读全文

我正在尝试使用递归方法在二叉树上编写预遍历算法。这是我所拥有的: void traverse(BT t) { if (t == null){ return; } System.out.print(t); traverse(t.left); traverse(t.right); } 由于某种原因,它不能编译。我认为问题出在我的其余代码中。这是完整的代码: class ZOrep extends TreeAndRepresentation { private int k; ZOrep left; ZOrep right…

2020年11月6日 0条评论 16点热度 阅读全文

我面临一个问题,该问题需要支持快速第k个最大元素查找的Queue数据结构。 该数据结构的要求如下: 队列中的元素不一定是整数,但它们必须彼此可比,即,当我们比较两个元素时,我们可以分辨出哪个更大(它们也可以相等)。 数据结构必须支持enqueue(在元素尾部添加元素)和dequeue(在元素头去除元素)。 它可以快速找到队列中的第k个最大元素,请注意k不是常数。 您可以假设操作enqueue,dequeue和第k个最大元素查找均以相同的频率发生。 我的想法是使用经过修改的平衡二进制搜索树。该树与普通平衡二叉搜索树相…

2020年11月5日 0条评论 10点热度 阅读全文