Questions tagged «algorithm»

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





5
围绕另一个点旋转一个点(2D)
我正在尝试制作纸牌散开的纸牌游戏。现在使用具有功能的Allegro API来显示Im: al_draw_rotated_bitmap(OBJECT_TO_ROTATE,CENTER_X,CENTER_Y,X ,Y,DEGREES_TO_ROTATE_IN_RADIANS); 因此,我可以轻松制作自己的歌迷效果。然后问题是知道鼠标在哪个卡下面。为此,我想到了进行多边形碰撞测试。我只是不确定如何旋转卡上的4个点以构成多边形。我基本上需要执行与Allegro相同的操作。 例如,卡的4点是: card.x card.y card.x + card.width card.y + card.height 我需要一个类似的功能: POINT rotate_point(float cx,float cy,float angle,POINT p) { } 谢谢
139 c++  algorithm 

13
给定一百万个数字的字符串,返回所有重复的3位数字
几个月前,我在纽约接受了一家对冲基金公司的采访,不幸的是,我没有获得数据/软件工程师的实习机会。(他们还要求解决方案使用Python。) 我几乎搞砸了第一次面试的问题... 问题:给定一百万个数字的字符串(例如,Pi),编写一个函数/程序,该函数/程序返回所有重复的3位数字,并且重复次数大于1 例如:如果字符串为:123412345123456则函数/程序将返回: 123 - 3 times 234 - 3 times 345 - 2 times 在面试失败后,他们没有给我解决方案,但他们确实告诉我,解决方案的时间复杂度恒定为1000,因为所有可能的结果都介于: 000-> 999 现在我正在考虑它,我认为不可能提出一个恒定时间算法。是吗?

5
如何实现三个堆栈的队列?
我在算法书(《算法》, Robert Sedgewick和Kevin Wayne 第四版)中遇到了这个问题。 与三个堆栈队列。实现一个具有三个堆栈的队列,以便每个队列操作都采用恒定数量(最坏情况)的堆栈操作。警告:高难度。 我知道如何使2个堆栈的队列,但我找不到3个堆栈的解决方案。任何想法 ? (哦,这不是家庭作业:))

2
为什么λ微积分的最佳评估器无需公式就可以计算较大的模幂?
教堂数字是自然数作为函数的编码。 (\ f x → (f x)) -- church number 1 (\ f x → (f (f (f x)))) -- church number 3 (\ f x → (f (f (f (f x))))) -- church number 4 整整齐齐地,您只需应用两个教堂数字即可对其求幂。也就是说,如果您将4应用于2,则会得到教堂编号16或2^4。显然,这完全不可行。教堂号码需要线性的存储空间,而且速度非常慢。计算类似的10^10内容-GHCI可以快速正确回答-可能会花费一些时间,而且无论如何都无法容纳计算机的内存。 最近,我一直在尝试使用最佳λ评估器。在测试中,我不小心在最佳λ计算器上键入了以下内容: 10 ^ 10 % 13 它应该是乘法,而不是幂。在我不由自主地终止永远运行的程序之前,它满足了我的要求: 3 { iterations: 11523, applications: 5748, …

8
如何在哈希表和Trie(前缀树)之间进行选择?
因此,如果我必须在哈希表或前缀树之间进行选择,那么有哪些区分因素会导致我选择一个而不是另一个。从我自己的幼稚角度来看,似乎使用trie会有一些额外的开销,因为它没有存储为数组,但是就运行时间而言(假设最长的键是最长的英文单词),它实际上可以是O (1)(相对于上限)。也许最长的英语单词是50个字符? 一旦获得索引,哈希表将立即查找。但是,散列密钥以获取索引似乎很容易采取近50个步骤。 有人可以为此提供更丰富的见解吗?谢谢!

4
哪种并行排序算法具有最佳的平均案例性能?
在串行情况下,排序需要O(n log n)。如果我们有O(n)个处理器,我们希望线性加速。存在O(log n)个并行算法,但是它们具有很高的常数。它们也不适用于没有O(n)处理器的商品硬件。对于p个处理器,合理的算法应花费O(n / p log n)时间。 在串行情况下,快速排序平均具有最佳的运行时复杂性。并行快速排序算法很容易实现(请参阅此处和此处)。但是,由于最初的步骤是将整个集合分区在单个内核上,因此执行效果不佳。我已经找到了许多并行排序算法的信息,但到目前为止,我还没有发现任何指向明确赢家的信息。 我希望以运行8到32个内核的JVM语言对100万到1亿个元素的列表进行排序。

7
为什么DFS和BFS的时间复杂度为O(V + E)
BFS的基本算法: set start vertex to visited load it into queue while queue not empty for each edge incident to vertex if its not visited load into queue mark vertex 所以我认为时间复杂度是: v1 + (incident edges) + v2 + (incident edges) + .... + vn + (incident edges) v顶点1到哪里n 首先,我所说的正确吗?其次,这是如何的O(N + E),以及关于其原因的直觉将非常好。谢谢

14
如何制作Zip炸弹?
有关拉链炸弹的问题自然使我进入了有关该主题的Wikipedia页面。本文提到了一个45.1 kb zip文件的示例,该文件解压缩为1.3艾字节。 首先,用于创建此类文件的原则/技术是什么?我不想真正做到这一点,而对简化的“工作原理”所涉及概念的解释更感兴趣。 ps 本文提到了9层zip文件,因此这不是将一堆零压缩的简单案例。为什么9个,为什么每个10个?

27
泡泡排序作业
在课堂上,我们正在做排序算法,尽管我在谈论它们并编写伪代码时理解得很好,但是我在为它们编写实际代码时遇到了问题。 这是我在Python中的尝试: mylist = [12, 5, 13, 8, 9, 65] def bubble(badList): length = len(badList) - 1 unsorted = True while unsorted: for element in range(0,length): unsorted = False if badList[element] > badList[element + 1]: hold = badList[element + 1] badList[element + 1] = badList[element] badList[element] = hold print badList …

3
加载的骰子的数据结构?
假设我有一个n面加载的模具,其中每边k 滚动时都有几率p k上升。我很好奇是否有一个好的算法可以静态地存储此信息(即固定的概率集),以便我可以有效地模拟骰子的随机滚动。 目前,我有一个O(lg n)解决方案。这个想法是存储所有k的前k个边的累积概率表,它们生成[0,1)范围内的随机实数,并对该表执行二进制搜索以获取其累加最大索引。值不大于所选值。我更喜欢这种解决方案,但是运行时没有考虑到这些可能性似乎很奇怪。特别是,在极端情况下,一侧总是出现或值均匀分布,尽管我的解决方案仍将采用对数步的许多方法,但可以通过朴素的方法在O(1)中生成滚动结果。 有人对运行时以某种“自适应”方式解决此问题有任何建议吗? 编辑:基于对这个问题的回答,我写了一篇文章,描述了解决这个问题的许多方法以及它们的分析。看起来Vose对别名方法的实现为每个模具辊提供了Θ(n)预处理时间和O(1)时间,这确实令人印象深刻。希望这是对答案中包含的信息的有用补充!

7
什么是好的哈希函数?
什么是良好的哈希函数?在大学的数据结构课程中,我看到了很多哈希函数和应用程序,但是我大多数时候都知道要创建一个好的哈希函数非常困难。为了避免发生冲突,我的教授说: function Hash(key) return key mod PrimeNumber end (mod是C和类似语言的%运算符) 质数应为哈希表的大小。我知道这是一个不错的功能,可以避免碰撞,而又可以避免快速碰撞,但是我该如何做得更好呢?对于数字键,字符串键是否有更好的哈希函数?

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.