Questions tagged «algorithm»

算法是定义明确的问题解决方案的一系列明确定义的步骤。当您的问题与算法设计有关时,请使用此标签。

2
std :: back_inserter的std :: set吗?
我想这是一个简单的问题。我需要做这样的事情: std::set<int> s1, s2; s1 = getAnExcitingSet(); std::transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor()); 当然,std::back_inserter因为没有,所以不起作用push_back。 std::inserter还需要一个迭代器?我没有用过,std::inserter所以不确定该怎么做。 有人有主意吗? 当然,我的另一个选择是对使用向量s2,然后稍后对其进行排序。也许更好?
94 c++  algorithm  stl 


3
为什么Dijkstra的算法使用减少键?
Dijkstra的算法教给我如下 while pqueue is not empty: distance, node = pqueue.delete_min() if node has been visited: continue else: mark node as visited if node == target: break for each neighbor of node: pqueue.insert(distance + distance_to_neighbor, neighbor) 但是我一直在阅读有关算法的文章,我看到很多版本都使用reduce-key而不是insert。 为什么会这样?两种方法有何区别?

6
一种将重叠的矩形隔开的算法?
这个问题实际上是与过渡有关的,下面我将其概括如下: 我有一个2D视图,并且在屏幕上的某个区域内有许多矩形。如何分散这些框,使它们彼此不重叠,而仅以最小的移动来调整它们? 矩形的位置是动态的,并且取决于用户的输入,因此它们的位置可以在任何地方。 所附图像显示了问题和所需的解决方案 实际上,现实生活中的问题涉及过渡。 对评论中问题的答案 矩形的大小不是固定的,并且取决于翻转中文本的长度 关于屏幕大小,现在我认为最好假定屏幕大小足以容纳矩形。如果矩形太多,并且算法没有产生任何解决方案,那么我只需要调整内容即可。 对于美学,“最低限度地移动”的要求比绝对的工程要求更多。可以通过增加两个矩形之间的距离来隔开两个矩形,但是作为GUI的一部分看起来效果不佳。这个想法是使翻转/矩形尽可能接近其来源(然后我将用黑线将其连接到来源)。因此,要么“只为x移动一个”,要么“两个都移动一半,x”都可以。

30
算法:从数组中删除重复整数的有效方法
我在接受Microsoft采访时遇到了这个问题。 给定一个随机整数数组,用C编写一个算法,该算法将删除重复的数字并返回原始数组中的唯一数字。 例如输入:{4, 8, 4, 1, 1, 2, 9} 输出:{4, 8, 1, 2, 9, ?, ?} 一个警告是预期的算法不应要求首先对数组进行排序。并且,当某个元素被删除后,以下元素也必须向前移动。无论如何,在元素向后移动的数组尾部的元素值可以忽略不计。 更新:结果必须在原始数组中返回,并且不应使用辅助数据结构(例如,哈希表)。但是,我认为没有必要保留订单。 Update2:对于那些想知道为什么这些不切实际的限制的人,这是一个面试问题,并且在思考过程中讨论了所有这些限制,以了解我如何提出不同的想法。

5
算法中不熟悉的符号:∀是什么意思?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 2年前关闭。 改善这个问题 我正在阅读一种算法(这是一种基于A *的寻路算法),其中包含一个我不熟悉的数学符号: 这里是上下文: v(s)≥g(s)=最小s'∈pred(s)(v(s')+ c(s',s))∀s≠s 开始 有人可以解释∀的意思吗?

30
使用Python进行快速排序
我对python完全陌生,我正在尝试在其中实现quicksort。有人可以帮我完成我的代码吗? 我不知道如何连接三个数组并打印它们。 def sort(array=[12,4,5,6,7,3,1,15]): less = [] equal = [] greater = [] if len(array) > 1: pivot = array[0] for x in array: if x < pivot: less.append(x) if x == pivot: equal.append(x) if x > pivot: greater.append(x) sort(less) sort(pivot) sort(greater)



20
如何在2D数组中搜索从左到右和从上到下排序的数字?
最近有人问我这个面试问题,我很好奇这将是一个好的解决方案。 假设我得到了一个二维数组,其中数组中的所有数字从左到右以及从上到下按递增顺序排列。 搜索和确定目标编号是否在数组中的最佳方法是什么? 现在,我的第一个倾向是利用二进制搜索,因为我的数据已排序。我可以确定在O(log N)时间中单行中是否存在数字。但是,正是这两个方向使我无法接受。 我认为可行的另一个解决方案是从中间开始。如果中间值小于我的目标,那么我可以确定它在中间矩阵的左方。然后,我沿对角线移动并再次检查,以减小目标可能位于的正方形的大小,直到我确定了目标编号。 有没有人有解决这个问题的好主意? 数组示例: 从左到右,从上到下排序。 1 2 4 5 6 2 3 5 7 8 4 6 8 9 10 5 8 9 10 11

9
按位代替模运算符
我们知道例如2的幂的模可以这样表示: x % 2 inpower n == x & (2 inpower n - 1). 例子: x % 2 == x & 1 x % 4 == x & 3 x % 8 == x & 7 一般两个数的无幂呢? 比方说: x%7 ==?
90 algorithm 

7
多项式时间和指数时间
有人可以解释多项式时间算法,非多项式时间算法和指数时间算法之间的区别吗? 例如,如果算法花费O(n ^ 2)时间,那么它属于哪个类别?
90 algorithm 

7
如何实施标签制度
我想知道实现标签系统的最佳方法是什么,就像SO上使用的那样。我在想这个,但是我无法提出一个好的可扩展解决方案。 我当时在考虑一种基本的三表解决方案:有一个tags表,一个articles表和一个tag_to_articles表。 这是解决此问题的最佳解决方案,还是有替代方案?使用这种方法,表的时间将变得非常大,我认为对于搜索而言,效率不是很高。另一方面,快速执行查询并不重要。

19
Google怎么能这么快?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 哪些技术和编程决策可以使Google如此快速地提供查询服务? 每次我搜索某项内容(每天几次)时,总是让我惊讶,它们在不到1秒的时间内还是如何提供结果。他们可以采用哪种配置和算法来实现这一目标? 旁注:有点让人不知所措,即使我要放置一个桌面应用程序并在我的计算机上使用它也可能不会比Google快一半。我说继续学习。 以下是一些不错的答案和提供的指导: Google平台 地图缩小 精心设计的算法 硬件-集群场和大量廉价计算机 缓存和负载平衡 Google文件系统

4
如何找到100个移动目标之间的最短路径?(包括现场演示。)
背景 此图说明了问题: 我可以控制红色圆圈。目标是蓝色三角形。黑色箭头指示目标将移动的方向。 我想以最少的步骤收集所有目标。 每转一圈,我必须向左/向右/向上或向下移动1步。 每转一圈,目标也会根据板上显示的方向移动1步。 演示版 我已经在Google appengine上对此问题进行了可播放的演示。 如果有人能击败目标分数,我将非常感兴趣,因为这表明我当前的算法不够理想。(如果管理成功,则应打印出祝贺消息!) 问题 我当前的算法在扩展目标数量方面确实非常糟糕。时间成倍增加,对于16条鱼,已经是几秒钟了。 我想为32 * 32的电路板尺寸和100个移动目标计算答案。 题 什么是计算收集所有目标的最小步骤数的有效算法(理想情况下为Javascript)? 我尝试过的 我当前的方法基于备忘录,但是它非常缓慢,我不知道它是否总是会产生最佳解决方案。 我解决了子问题“收集给定目标集并最终达到特定目标的最小步骤数是多少?”。 通过检查先前访问过的目标的每个选择,可以递归地解决子问题。我认为总是最好的方法是尽快收集先前的目标子集,然后尽快从最终位置移至当前目标(尽管我不知道这是否是一个有效的假设)。 这导致要计算的n * 2 ^ n状态非常迅速地增长。 当前代码如下所示: var DX=[1,0,-1,0]; var DY=[0,1,0,-1]; // Return the location of the given fish at time t function getPt(fish,t) { var i; var x=pts[fish][0]; var …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.