- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果我给了最大重量说 w=20 并且我给了一组重量说 m=[5,7,12,18] 那么我怎么能计算出我们可以容纳的最大可能重量使用 m 的最大重量。在这种情况下,答案是 19。通过添加 12+7=19。我的代码给了我 18。请帮助我。
int weight(int W, vector<int> &m) {
int current_weight = 0;
int temp;
for (int i = 0; i < w.size(); i++) {
for (int j = i + 1; j < m.size(); j++) {
if (m[i] < m[j]) {
temp = m[j];
m[j] = m[i];
m[i] = temp;
}
}
}
for (size_t i = 0; i < m.size(); ++i) {
if (current_weight + m[i] <= W) {
current_weight += m[i];
}
}
return current_weight;
}
最佳答案
您描述的问题看起来更像是 maximum subset sum 的一个版本问题。基本上,首先您的实现没有任何问题;显然你已经正确地实现了这个问题的贪心算法。也就是说,该算法无法为每个输入生成最优解。你找到的实例就是这样的例子。
但是,可以使用称为 dynamic programming 的不同方法解决该问题。 ,这可以看作是解决方案的递归公式的组织形式。
设 m = { m_1, ... m_n }
是正项大小的集合,W
是一个容量约束,其中 n
是一个正整数。将数组 A[n][W]
组织为状态空间,其中</p>
A[i][j] = the maximum weight at most j attainable for the set of items
with indices from 0 to i if such a solution exists and
minus infinity otherwise
对于每个 i in {1,...,n}
和 j in {1,...,W}
;为了便于演示,假设 A
在其他任何地方都具有负无穷大的值。请注意,对于每个这样的 i
和 j
递归关系
A[i][j] = min { A[i-1][W-m_j] + m_j, A[i-1][W] }
成立,第一种情况对应于选择项目 i
进入解决方案,第二种情况对应于不选择项目 i
进入解决方案解决方案。
接下来,组织一个循环,按照 i
和 j
值递增的顺序填充此表,其中 i = 1
的初始化> 必须在之前完成。填充状态空间后,最后一列的最大可行值
max{ A[n][j] : j in {1,...,W}, A[n][j] is not minus infinity }
产生最优解。如果还需要关联的项目集,则必须使用一些回溯或合适的辅助数据结构。
关于c++ - 只有重量的背包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36200214/
我有以下查询: select ema.es_symbol as symbol, ema.score as score, ema.weight as weight, rsi.relative_stren
我有一个 ms-sql 表,看起来像这样(重量 = kg)。 我希望能够计算给定标识符所需的箱子数量和每个箱子的重量。一个盒子最多可以容纳 30 公斤。该标识符的所有项目都可以在一个框中混合。我仅限于
我正在尝试通过 PHP 将重量分配给卡车。 条件 卡车可以有不同的尺寸 可设置单辆或多辆 卡车越少越好 我有这个 class VehicleCalculation { /** * @var
如何在这段代码中引用石头的重量,以便我可以在unlockChest方法中使用它?我基本上试图将用户从对象 new Stone()) 输入的权重相加,因此它 == 组合了用户在 Chest() 构造函数
我在线性布局中使用表格布局,第一行结果很好,但连续的行完全错误,尽管设置了它们。我不确定这是否是我正在运行的 Android Studio 版本的问题,或者它是否不适用于 kotlin ...有什么办
我在平衡方面遇到了麻烦。我觉得我在这里遗漏了一些东西.. 这个问题等同于以下情况: table 上散布着各种质量的砝码。 你手里拿着几个不同质量的砝码。 如果 table 上有一组重量与您手中的重量相
我已经在 YOLOv3 中进行了超过 3 个类别的自定义检测,但是检测结果不准确,所以我想用更多图像重新训练我的自定义 YOLO 权重,但是 当我用新图像运行它时,它立即完成,我做错了什么? 这是我如
所以我需要分割字符串: Laundry Detergent 2X Ultra Free Clear 50
我使用 ClientBundle 和 CssResource 接口(interface)。所有适用于类的样式都有效: 在 CSS 中:.dialogVPanel { margin: 5px;} 在界面
我几乎是编程新手,所以这可能看起来是一个非常愚蠢的问题,我已经尝试这样做有一段时间了,但无法理解它。 但是我想知道 JList 对象是否可以存储多个值,因此当我单击列表中的对象时,不同的值(例如价格、
我想创建具有相同宽度并被拉伸(stretch)以(匹配)父按钮的按钮。我需要以编程方式来完成它。首先,我创建了一个所需状态的布局草稿(只关注按钮的绿线):
我正在尝试在 iOS 中模拟 Android android:layout_weight="1" 中的属性。 我有一个带有 7 个按钮的 View ,我希望它们都具有相同的宽度和相同的边距。在 And
我想知道使用 XmlDocument 类来处理小型 XML 文件的感觉。如果在加载XML文件的过程中,XmlDocument为所有的XML元素及其关系创建了一整套面向对象的结构,理论上对于小的xml文
给定 n 个无限容量的箱子,我想将 m 件元素装入其中(每个元素都有特定的重量),同时最小化最重箱子的重量。 这不是传统的垃圾箱包装/背包问题,其中垃圾箱的容量有限,而您试图尽量减少使用的垃圾箱数量;
过去几天我一直在学习 D3。我尝试将我所学到的所有内容简化为一个简单的 D3 示例,但我看到了标题中提到的错误。 我确信这很简单,我错过了什么? 代码: .node { fill: #c
我是一名优秀的程序员,十分优秀!