Python 给定容量的最大值

Python 给定容量的最大值,python,Python,我正在尝试编写一个函数,该函数将从项目列表中返回给定容量的最大值。如果两个或多个项目具有相同的值,请找到最佳组合。 函数类似于函数(容量、项目列表),它需要返回最大值。 输入示例:(‘名称’、重量、值) 功能(5,项目列表)列表1和功能(10,项目列表2)的预期输出: 我已经成功地获得了给定示例的预期输出。但是,我一直未能通过一些隐藏的输入测试。 我做这件事的方法是,我按照价值的降序对列表进行排序。如果项目的价值相同,则以重量较小的项目为准 item_list = [('item4', 6, 8

我正在尝试编写一个函数,该函数将从项目列表中返回给定容量的最大值。如果两个或多个项目具有相同的值,请找到最佳组合。 函数类似于
函数(容量、项目列表)
,它需要返回最大值。 输入示例:(‘名称’、重量、值)

功能(5,项目列表)
列表1和
功能(10,项目列表2)
的预期输出:

我已经成功地获得了给定示例的预期输出。但是,我一直未能通过一些隐藏的输入测试。 我做这件事的方法是,我按照价值的降序对列表进行排序。如果项目的价值相同,则以重量较小的项目为准

item_list = [('item4', 6, 80),('item3', 2, 50),('item1', 2, 20),('item2', 3, 20)]
我的问题是,有时价值较低的物品的组合会比价值较高但重量较大的物品的组合更大。我只是不知道如何解决这个问题。
如果有人能给我一些指导,让我参考一些资料阅读,我真的很感激。我更喜欢简单的代码解决方案,因为我对这一切还是新手。谢谢

我试过谷歌“背包0/1”,但代码太复杂了,我无法理解。发布你尝试过的代码这是背包问题,这很难。最好的方法是使用凸优化。
纸浆
模块适用于此。这是一个解决类似问题的教程,您应该能够适应它。(当教程问题使成本最小化时,您可以使项目价值最大化。当它设置最小营养时,您可以设置最大重量。)
70
200
item_list = [('item4', 6, 80),('item3', 2, 50),('item1', 2, 20),('item2', 3, 20)]