Questions tagged «algorithms»

在数学和计算机科学中,算法是一种有效方法,表示为用于计算函数的定义明确的指令的有限列表。算法用于计算,数据处理和自动推理。

4
面试问题排名FizzBu​​zz(1),实现malloc(10)[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我想对以下面试问题的难度发表意见: 在O(n)时间的整数数组中找到最大和的连续子数组。 乔恩·本特利(Jon Bentley)在他的《编程珍珠》中将这个琐碎的发声问题称为著名,他用它来演示算法设计技术。 以1到10的比例,1是FizzBu​​zz(或HoppityHop)测试,10是实现C stdlib函数malloc(),您如何评价上述问题? 我认为最能回答这个问题的人是已经阅读了《 Programming Pearls》并尝试自己解决此问题的人。为了激励那些没有的人,“ Programming Pearls”在“十大编程书籍”列表中得到了很多推荐。 以下几点评论可能有助于获得更好的评分: 实现malloc()并不像看起来那么困难。例如,请参见K&R的C编程语言。有时微软会问它。 CLRS对问题解决的观察:从头开始解决问题通常比验证清楚提出的解决方案更加困难,尤其是在时间限制下工作时。

10
比手写循环更喜欢算法?
您对以下哪项更具可读性?手写循环: for (std::vector<Foo>::const_iterator it = vec.begin(); it != vec.end(); ++it) { bar.process(*it); } 或算法调用: #include <algorithm> #include <functional> std::for_each(vec.begin(), vec.end(), std::bind1st(std::mem_fun_ref(&Bar::process), bar)); 我想知道是否std::for_each真的值得,因为这样一个简单的示例已经需要大量的代码。 您对此事有何看法?
10 c++  algorithms 

5
是否可以以编程方式评估任意代码的安全性?
最近我一直在考虑安全代码。线程安全的。内存安全。不会在带有段故障保险柜的情况下爆炸。但是为了清楚起见,让我们使用Rust的安全模型作为我们的定义。 通常,确保安全性是网络的一个大问题,因为正如Rust的需求所证明unsafe,存在一些非常合理的编程思想(例如并发性),如果不使用关键字就无法在Rust中实现unsafe。尽管并发可以由具有锁,互斥,渠道和内存隔离或者你有什么绝对安全的,这需要工作以外的铁锈的安全模式unsafe,然后手动确保编译器,“是的,我知道我在做什么看起来不安全,但是我已经从数学上证明了它是绝对安全的。” 但这通常归结为手动为这些事物建模并通过定理证明者证明它们是安全的。从计算机科学的角度(可能)和实用性的角度(是否要占用宇宙的生命),可以想象一个程序以任意语言使用任意代码并评估它是否是“防锈”? 注意事项: 一个简单的提示就是指出程序可能正在停止,因此停止问题使我们无法正常工作。假设提供给阅读器的任何程序都可以停止 虽然“以任意语言编写任意代码”是目标,但我当然知道,这取决于程序对所选语言的熟悉程度,我们将以此为前提

3
调车场算法中函数的优先级
如维基百科所述,我正在研究调车场算法。 与运算符打交道时的算法描述如下: 如果令牌是运算符,则为o1,则: 而在运算符堆栈的顶部有一个运算符令牌o2,或者 o1 is left-associative and its precedence is less than or equal to that of o2, or o1 is right associative, and has precedence less than that of o2, 然后将o2从运算符堆栈中弹出,进入输出队列; 将o1推入操作员堆栈。 但是,他们给出了以下示例: 输入: sin max 2 3 / 3 * 3.1415 当算法命中/令牌时,对应该发生的情况的描述如下: Token | Action | Output …

2
键值存储中的项目过期算法是什么?
我在考虑当前的键值存储如何实现项目的“到期日期”。目前,我有2种变体供您选择: 他们什么也不做(保留过期的数据),并且只在您执行操作时检查,例如,通过某些键进行GET。这里的问题是,如果您的内存有限,则过期的项目将不会被删除。 它们保留了其他数据结构,以便能够“最早过期”。我看到可以通过以下方式完成: storage_data = dict(key -> [value, expire_timestamp]) expire_tree = SomeBinaryLikeTree(expire_timestamp -> [keys])

1
如何使用样本数据正确记录算法?
我想知道算法文档应包含什么?找不到合适的指导方针可以遵循。我想包括 算法总结 算法说明 流程图 伪代码 样本输入数据集(多个) 输出数据 单元测试 实验 客户要求提供这样的文档,以便:对我们自己的号码保持信心,并向潜在客户描述我们的流程,以便他们知道我们正在采取步骤来检查和验证我们的计算。 这样的文档看起来如何?(示例PDF) 您将在本文档中进一步包括什么? 我列举的是那么好,还是应该以不同的方式记录下来? 您将如何在Google中搜索此类文档样本?

3
选择热量最多的食物
假设我每天吃五顿饭,并且由于一周中有七天,我每顿饭有七个食谱,总共35个食谱。每个食谱都有卡路里计数。每一餐每一天都必须包含一个食谱,并且每个食谱都固定于特定的一餐(例如晚餐不能吃煎饼)。解决方案中必须包含所有35种食谱,因此一周内不能重复食谱。 我想找到可以每天提供最多卡路里数的膳食安排-也就是说,我想使每天消耗的总卡路里之间的差异最小化。 这不是作业问题,这是事实!我无法提供比暴力破解更好的方法,并且有7!^ 4个组合,这很多。

1
为复杂的工作时间表建模
我遇到了一个现实世界的问题,我试图代表并实现自动化。我已经将其简化并抽象为以下内容: 有n个工作地点(P1,P2,...,Pn)。 每个位置Pn都有一个密钥Kn。 有m个工人(W1,W2,...,Wm)。 为了在Pn工作,工人必须持有Kn。 每个密钥既可以由工作人员持有,也可以留在交易所E中。 工人可以随时到交易所旅行,以拿起一些无人认领的钥匙或放下一些钥匙以供其他人使用。 现在,必须严格执行外部工作计划。例如: 2016-04-21 W1必须在P6工作 2016-04-21 W2必须在P3工作 **需要交换钥匙** 2016-04-22 W3必须在P3工作 2016-04-22 W2必须在P6工作 任何数量的工人都可能必须在其计划的某个时间在Pn工作,尽管从来没有在同一天 我们知道: 所有键的起始位置,包括工作人员或E 每个工人必须履行的未来工作指令 因此,我正在努力为整个情况建模。您能提出我应该考虑的数据结构和算法,以便掌握它并开始优化每个工人的交易所旅行吗? 我要最小化的是去E的行程总数。第二个目标是确保没有工人进行不成比例的行程。 提前致谢!!

2
缩时摄影的最佳压缩算法
我有一个包含约9,000张JPEG照片(约30 Gb)的文件夹,我想以某种压缩方式对其进行存档。我了解到,压缩JPEG通常不是很有效,但是这些照片是间隔拍摄的帧,因此大多数图像之间有很多共性。在这种情况下,我是否可能获得比正常情况更多的文件大小减少?是否有一种特殊的(通用)压缩算法在这种情况下可能会做得特别好?

4
存储数据的最有效方法是什么?
我负责重写一些旧的VB代码。我了解它是如何工作的,但是我觉得有一种更有效的方法来完成他们的工作。我只是不知道那是什么。这是一个人为的示例,它在数据需求方面确实与我需要做的相似。 用户必须在GUI中挑选汽车的制造商,制造商,型号和颜色。我有一个很大的文本文件,看起来像这样: Ford Truck F150 red Ford Truck F150 blue Ford Truck F150 black Ford Truck F150 silver Ford Truck F250 red Ford Truck F250 green Ford Sedan Taurus red Ford Sedan Taurus green Ford Sedan Taurus white Ford... ... Subaru SUV Forester blue Subaru SUV Forester red Subaru SUV …

7
确定每周数据系列中交易的算法?
我正在尝试开发一个小型报告工具(具有sqlite后端)。我可以最好地将此工具描述为“交易”分类帐。我正在尝试做的是跟踪每周数据提取中的“交易”: “新”(或添加)-资源对于我的应用程序来说是新的,因为我的应用程序之前可能没有跟踪过该资源,因为尚未通过提取看到它。 “更新”(或命中)-最近使用了该资源,将保留期再更新一周。 “删除”(或删除)-自上次报告以来该项目未使用(可选,但是可以很好地绘制出每周对资源需求的变化图)。 我所得到的只是每周的数据提取(以竖线分隔的平面文件),这些数据来自我无法控制的旧版归档/记录管理系统。 每一行都可以大致提炼为: resource_id | resource info | customer_id | customer_info 样本数据: 10| Title X | 1 | Bob 11| Another title | 1 | Bob 10| Title X | 2 | Alice 目的是使报告X个月未使用过的资源变得容易(基于最后一次点击)。在保留期中,如果资源很受欢迎,则将其保留在附近以便于访问。尚未使用18个月的资源已标记为可在其他地方进行长期存档。 这一定是一个普遍的问题。想知道是否有通用算法来确定数据集之间的新内容/相同内容/已删除的内容(数据库还是最新摘录)?

3
我的算法无法从较小的盒子中提取出最大的盒子,但算法太慢
想象一下一个基于多维数据集的世界(例如Minecraft,Trove或Cube World),其中所有事物都由大小相同的多维数据集组成,并且所有多维数据集都是同一种类。 目标是用最少的矩形框表示世界(通过合并立方体但保留凸形(又称矩形框))。我的算法在此方面取得了成功,但是其性能对于预期的目的而言太慢了。有更快的算法吗? 我算法的伪C#代码基本上是: struct Coordinate { int x,y,z; }; //<-- integer based grid HashSet<Coordinate> world; // <-- contains all the cubes //width, height, and length represent how many cubes it spans struct RectangularBox { Coordinate coord; int width,height,length; } void Begin() { List<RectangularBox> fewestBoxes = new List<RectangularBox>(); while(world.Count > …


3
字符串数,每个字符必须出现偶数次
我已经为此问题problem了一段时间,这真的开始让我感到沮丧。问题是: 我有一个字符集,A,B,C,和D。我必须说出从这些字符中构建字符串的方式,长度是多少n,每个字符必须出现偶数次。 例如,答案为n = 24: AA BB CC DD 答案n = 4是40。其中一些有效的字符串是: AAAA AABB CACA DAAD BCCB 我坚持提出一个逻辑。我觉得可能会有一个DP解决方案。解决这个问题的方法是蛮横的:解决方案的数量迅速增长到巨大数量。 我试图在纸上画出各种想法,但没有成功。我几乎不得不放弃所有这些想法,因为它们的复杂性太大。该解决方案应有效n = 10^4。 我的想法之一是永远不要跟踪实际的字符串,而只能跟踪每个字符出现的是偶数还是奇数次。我无法提出一种应用此逻辑的方法。 谁能帮我?

8
面向对象与算法之间的关系
当我阅读一些算法教科书时,它们充满了解决某些问题(排序,最短路径)或某些常规方法(递归算法,除以征服,动态编程等)的巧妙程序。我在那里发现了很少的面向对象编程的痕迹。(为什么它们更面向过程?)。 然后我在想: 算法和OOP之间有什么关系?他们是两个独立的主题吗? 是否存在一些只能由OOP提出和解决的问题? OOP如何帮助算法?或会在哪个方向影响它?

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.