divide-and-conquer

    0热度

    1回答

    有实践在我的算法教科书问题是我不知道的,并希望有人能详细点/解释: 当你设计一个分而治之算法来存储大小为n的链表项,在最坏的情况下,将问题分为一半的问题比算法将列表分成一个大小为1的子问题和另一个大小为n-1的问题的渐近更快?

    2热度

    1回答

    一种算法将大小为n的问题分解为每个大小为n/b的b个子问题,其中b是整数。分解的代价是n,C(1)= 1。使用重复替换显示,对于2≥b的所有值,算法的复杂度为O(n lg n)。 (n)= C(n/b)+ n 并且在用k个步骤代替我之后得到C(n)= C(n/b^k)+ N [求和(从i = 0到k-1)的(1/b)^ I] K =日志(基极b)N 我不知道我得到所有这对,因为当我完成这个任务时,

    4热度

    3回答

    如果在函数中只有一个递归调用,我可以很容易地理解递归。但是,当我在同一个函数中看到两个或多个递归调用时,我真的感到困惑。例如: int MaximumElement(int array[], int index, int n) { int maxval1, maxval2; if (n==1) return array[index]; maxval1

    0热度

    2回答

    我迄今所做的是: T(n-1) + 10/n T((n-1)-1) + 10/(n-1) + 10/n = T(n-2) + 10/(n+1) + 10/n T((n-2)-1) + 10/(n+2) + 10/(n+1) + 10/n = T(n-3) + 10/(n+2) + 10/(n+1) + 10/n 假设n-k = 1, 所以......我这里迷路, T(n-k) +

    0热度

    2回答

    该算法应该找到只使用一角硬币,五分硬币和便士,就可以对输入数量进行改变的方法数量。我的做法是采用分而治之的策略,通过找出用最大的硬币进行变化的方式数量,一角硬币以及不用一角硬币就能做出改变的方法数量。我为这个算法编写了一个实现,它正确地解决了1 ... 14输入的问题,但是当输入等于或大于15时,返回的结果是不正确的。显然,我的算法是错误的,并且想知道需要做些什么修改来修复代码,以及我的方法是否是

    1热度

    1回答

    您将获得2010年奥林匹克票的n个请求的数组A.该阵列在请求时被排序,以便A(1)是第一个到达,A(2)是第二个到达等等。每个请求包含一个十位电话号码。为了公平起见,奥林匹克组织者制定了一条规定,每个电话号码只能有一个请求。已经注意到数组A包含来自某些电话号码的多个请求。写一个O(nlogn)时间分割和征服算法,从A中删除除了第一次接收到的来自同一个电话号码的所有请求。最终输出应该是数组A,其中包

    1热度

    2回答

    一直在学习分而治之,我正在努力去理解一个概念。如果我们有一个排序的数组,并希望做一些任务....我们得到的公式 T(n) = a (n/b) * O(n) 如果我们使用b = 2(二叉树),这意味着每个子阵列制作成两个子阵......我们得到 T(n) = 2 (n/2) * O(n) - >和掌握规则running time = O(n * logn) 现在,如果我们使用b = 3(三进制树

    1热度

    1回答

    我有我的tromino程序。但是,现在它需要转换为图形(我最后留下)。我很困惑如何做到这一点,我知道一些关于图形的基础知识,但看看我的程序,似乎我可能需要做很多修改才能使其工作。 有没有简单的方法来做到这一点? 基本上我需要将我现在作为数字的trominos转换成一个棋盘(大小由用户指定)。不足的广场是任何颜色,表明它是缺陷广场的位置。下面是代码: import java.util.*;

    1热度

    3回答

    “为给定应用程序设计正确的算法是一项困难的工作,它需要一个主要的创造性行为,解决问题并将解决方案从以太网中解脱出来,这比接受某人更困难其他人的想法,并修改或调整它,使其更好一点。在算法设计中你可以做出的选择空间是巨大的,足以让你有足够的自由来吊死自己。 我研究过像分治,动态规划,贪心算法几个基本的设计手法,回溯等 但我始终没有认识到什么样的原则,当我遇到某些编程问题适用。我想要掌握算法的设计。 所

    0热度

    1回答

    我试图实现快速排序。但控制似乎永远不会退出快速排序功能。任何帮助将非常感激。 几个要点: 我使用的第一个元素作为支点。我知道有更好更高效的技术来选择关键点,但这不是关于这一点。 2.分区函数中的'k'变量是pivot元素。 据我所知,问题与分区功能,因为我已经尝试调试它不同的时间。 此外,这不是一个家庭作业问题。我试图在自己学习之后实现算法。 #include<iostream> using n