当前位置: 首页 > 知识库问答 >
问题:

背包约束python

邢良才
2023-03-14

假设我有一个表示篮球运动员及其姓名、位置、费用和预计得分的元组列表,

listOfPlayers = [
                 ("Player1","PG",Cost,projectedPoints),
                 ("Player2","PG",Cost,projectedPoints),
                 ("Player3","SG",Cost,projectedPoints),
                 ("Player4","SG",Cost,projectedPoints),
                 ("Player5","SF",Cost,projectedPoints),
                 ("Player6","SF",Cost,projectedPoints),
                 ("Player7","PF",Cost,projectedPoints),
                 ("Player8","PF",Cost,projectedPoints),
                 ("Player9","C",Cost,projectedPoints),
                 ("Player10","C",Cost,projectedPoints) 
                ]

共有1个答案

马天逸
2023-03-14

这就是所谓的“多项选择背包问题”。

您可以使用类似于0/1背包问题的动态规划解决方案的算法。

0/1背包问题的解决方案如下:(来自维基百科)

m[i, w] = m[i-1, w] if w_i > w   (new item is more than current weight limit)
m[i, w] = max(m[i-1, w], m[i-1, w-w_i] + v_i) if w_i <= w.
m[i, c] = max(m[i-1, c],
              m[i-1, c-c_i_1] + p_i_1   if c_i_1 <= c, otherwise 0,
              m[i-1, c-c_i_2] + p_i_2   if c_i_2 <= c, otherwise 0,
              ...
              m[i-1, c-c_i_n] + p_i_n   if c_i_n <= c, otherwise 0)
Name     Position  Cost  Points
Player1  PG        15    5
Player2  PG        20    10
Player3  SG        9     7
Player4  SG        8     6

因此,对于位置“pg”(i=1),我们将有:

m[i, c] = max(m[i-1, c],
              m[i-1, c-15] + 5    if 15 <= c, otherwise 0,
              m[i-1, c-20] + 10   if 20 <= c, otherwise 0)

对于位置“SG”(i=2),我们有:

m[i, c] = max(m[i-1, c],
              m[i-1, c-9] + 7    if 9 <= c, otherwise 0,
              m[i-1, c-8] + 6    if 8 <= c, otherwise 0)
 类似资料:
  • 我试图找出一个有四个约束的背包的逻辑。我想做一个程序,你输入你想在一餐中摄入的卡路里、脂肪、碳水化合物和蛋白质,它会在一个可能的食物列表中查找符合输入标准的最接近的食物组合。 示例 我有这些东西 4盎司牛肉(231卡路里,15克脂肪,0克碳水化合物,22克蛋白质) 1/2杯燕麦粥(260卡路里,2克脂肪,58克碳水化合物,10克蛋白质) 1/2杯黑豆(120卡路里,.5克脂肪,23克碳水化合物,7

  • 这就是古老而著名的背包问题:背包问题 这里我有一个有约束的背包问题。 我有一个大小为W=100000000和N=100项的背包,我为它写了动态解。我的算法复杂度为,这在时间和空间上都太大了,但这里有一个条件,所以如果我的背包大小超过50000,我的项的最大值是有限的。 所以现在我想知道如何用这个条件我认为背包问题取决于背包的大小和物品的数量,那么物品的值如何才能改变我的算法呢?

  • 问题内容: 在Derby服务器中,如何使用模式的系统表中的信息来创建select语句,以便检索每个表的约束名称? 问题答案: 相关手册是《Derby参考手册》。有许多版本可用:10.13是2017年4月的最新版本,但在2009年5月是10.3的最新版本。 原始答案 由于Derby的最新版本要求系统目录表的前缀在kiwicomb123的注释中引用了10.13 ,因此可以修改查询以使用显式的JOIN表

  • 主要内容:NOT NULL 约束,DEFAULT 约束,UNIQUE 约束,PRIMARY KEY 约束,CHECK 约束,删除约束约束是在表的数据列上强制执行的规则。这些是用来限制可以插入到表中的数据类型。这确保了数据库中数据的准确性和可靠性。 约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整个表。 以下是在 SQLite 中常用的约束。 NOT NULL 约束:确保某列不能有 NULL 值。 DEFAULT 约束:当某列没有指定值时,为该列提供默认值。 UNIQUE 约束:确保某

  • PostgreSQL 约束用于规定表中的数据规则。 如果存在违反约束的数据行为,行为会被约束终止。 约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。 约束确保了数据库中数据的准确性和可靠性。 约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整个表。 以下是在 PostgreSQL 中常用的约束。 NOT NULL

  • 主要内容:创建约束,删除约束关于 SQL 约束,我们已经在《 RDBMS是什么》中进行了简要介绍,但是现在我们有必要再温习一下,并稍加深入。 约束(Constraint)是指表的数据列必须强行遵守的规则,这些规则用于限制插入表中的数据类型,这样能够确保每份数据的准确定和可靠性。 约束可以是列级别,也可以是表级别;列级约束仅作用于某一列,而表级约束则作用于整张表。 下面是 SQL 常用的一些约束: 约束 说明 NOT NULL