我正在尝试编写一个函数,该函数将从项目列表中返回给定容量的最大值。如果两个或多个项目具有相同的值,请找到可能的最佳组合。函数就像function(capacity,item_list) 它需要返回最大值。示例输入:('name', weight, value)
item_list = [('item1', 2, 20), ('item2', 3, 20), ('item3', 2, 50), ('item4', 6, 80)]
item_list2 = [('item1', 8, 100), ('item2', 4, 100), ('item3', 4, 100)]
function(5,item_list)列表 1 和 的预期输出function(10, item_list2):
70
200
我已成功获得给定示例的预期输出。但是,我一直未能通过一些隐藏的输入测试。我这样做的方法是,如果项目具有相同的值,则按值的降序对列表进行排序,重量较轻的将占上风。
item_list = [('item4', 6, 80),('item3', 2, 50),('item1', 2, 20),('item2', 3, 20)]
我的问题是有时价值较小的项目组合会大于价值较高但重量较大的项目组合。我只是不知道如何解决这个问题。如果有人能给我一些指导并推荐我阅读一些资源,我真的很感激。我更喜欢简单的代码解决方案,因为我对这一切还是陌生的。谢谢!