- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是算法的新手,目前正在使用 you-tube 视频教程/讲座和一本书进行学习,我首先观看视频,然后阅读本书,最后尝试书中的一个问题以确保我已经了解了该主题正确。我目前正在研究贪心算法,这非常令人困惑。
书中有各种各样的问题,但我无法理解和回答一个特定的问题。
首先它给出了问题是(我刚刚复制了文本)。
有一组 n 个大小为 {x1; x2;..... xn} 和一个带有容量B。所有这些都是正整数。尝试找到这些对象的子集使得它们的总大小小于或等于B,但尽可能接近B。
所有对象都是一维的。例如,如果对象的大小为 4、7、10、12、15 和B = 20,那么我们应该选择总大小为 19 的 4 和 15(或等效地,7 和 12)。对于以下每个贪心算法,通过创建来证明它们不是最优的一个反例。尝试让你的例子尽可能糟糕,其中“糟糕”由最优解和贪心解之间的比率来衡量。因此,如果最好解值为10,贪心解值为5,则比值为2。
我该怎么做才能做到这一点?
1) 总是选择尺寸最大的物体,使得这个和所有物体的总尺寸已选择的其他对象不超过 B。对其余对象重复此操作。
最佳答案
假设问题如下:
您有一个大小为 2n
的盒子,其中一个元素的大小为 n+1
,其余元素的大小为 n
。
很容易看出,最优值是 2 个大小为 n
的元素,而贪心算法会得到一个大小为 n+1
的元素。
因为它对每个 n
都是真的,它实际上给了你一个期望的比率,至少使用这种贪婪的方法 2
。
关于algorithm - 贪心算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9589439/
>>> import re >>> p = re.compile('.*&l=(.*)(&|$)') >>> p.search('foo&l=something here&bleh').group(1
最近有一道面试题如下:我们得到了一个单词列表,我们想要格式化它们以最大化回车符的数量,同时将每行的字母数量保持在一个范围内。 例如,我们希望每行的字母范围为 5 - 10(含),一种解决方案是: he
我正在使用二维数组来处理游戏中的对象。数组的维度就像笛卡尔网格上的坐标。当玩家选择一个点时,我想从数组中收集 N 个最近的网格单元,即使该点不是有效的数组索引。 例子:从 [0,0] 到 [10,10
我在 Hibernate 之上使用 Olingo 1.2。 我有一个返回 250 行的请求,每行以一对多关系链接到另一个表。 我执行 $expand 以获取子表中的所有数据,但是当我检查在数据库中执行
我正在 ANTLR4 中构建语法,但收到此警告 TL4.g4:224:12: greedy block ()* contains wildcard;非贪婪语法 ()*?可能是首选 这是它引用的代码行
In the default greedy mode, all data offered to targets are accepted, even if the other target doesn
假设我有 n 个盒子,每个盒子里面都有一些值 b[i] .我可以保证对一组框进行排序,使得 b[1] j; { min_{k=i}^j (c[k] + max(T(i, k-1)
本文已收录到 AndroidFamily ,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末是 LeetCode 第 339 场周赛,你参加
什么是 PHP 中的“贪心 token 解析”?我在 Codeigniter 指南中找到了这个: “除非需要解析变量,否则始终使用单引号字符串,并且在确实需要解析变量的情况下,使用大括号防止贪婪的标记
本文已收录到 AndroidFamily ,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末是 LeetCode 第 337 场周赛,你参加
我是一名优秀的程序员,十分优秀!