我有一个小任务要做,我真的不知道如何解决: 我有一些物件,这些物件具有一定的价值和重量,我必须确定要隐藏的对象,而不要隐藏的对象。另一个问题是体重,由于我的步履蹒跚,我也必须考虑一下体重。
从对象列表开始,这些对象由索引,价值,重量标记。在给定的最大重量的帮助下,我必须确定最高价值的物体,该物体不超过最大重量。这些对象只能使用一次。
我必须用python动态编程解决问题。显示线索引和列索引,直到可以优化对象(权重)为止。
我所代表的对象是价值和重量对:
示例:T [3] [5]显示了例如最高的可悲价值,可以通过3个最大权重为5的物体来解决。
如果您不想只知道物体的最大重量,也不想知道其他信息,则还必须保存。在每个条目中,T [i] [j] ypu也可以保存是否存在最高价值的物品。 (具有1或0),因为在每一行中只能存在一个对象。该标志还可以用于填充表格。因此,存在函数bestChoice(chart,item)。修改函数createChart(items,MAX),以便表条目可以从createChart中计算对和值以及所解释的标志(0或1) 构造的表T2可以在函数bestChoice的帮助下返回objetslist。实现该函数,以便返回值应该是一个列表,该列表将对象的0或1调整为0,或者是否在该部分中。
我知道任务很艰巨。如果您对任务有疑问,请询问。提前致谢。
def createChart( items , MAX ):
#Here should be the solution for creating a chart T from a given list of objects and maximum weight
return ?
def bestChoice( chart , items ):
return ? #the selection of items should be returned here
#Testcase
items = [(3,4),(1,1),(4,5),(3,4),(2,2)]
maxWeight = 8
T = createChart( items , MAX )
# T should be this
#[[(0, 0) (0, 0) (0, 0) (0, 0) (0, 0) (0, 0) (0, 0) (0, 0) (0, 0)],
# [(0, 0) (0, 0) (0, 0) (0, 0) (3, 1) (3, 1) (3, 1) (3, 1) (3, 1)],
# [(0, 0) (1, 1) (1, 1) (1, 1) (3, 0) (4, 1) (4, 1) (4, 1) (4, 1)],
# [(0, 0) (1, 0) (1, 0) (1, 0) (3, 0) (4, 0) (5, 1) (5, 1) (5, 1)],
# [(0, 0) (1, 0) (1, 0) (1, 0) (3, 0) (4, 0) (5, 0) (5, 0) (6, 1)],
# [(0, 0) (1, 0) (2, 1) (3, 1) (3, 0) (4, 0) (5, 0) (6, 1) (7, 1)]]
#first component of the the last table item
bestValue = T[-1][-1][0] #should return the maximal value ( = 7 )
L = bestChoice( T , items)
#should be [0, 1, 1, 0, 1]