我在python中使用DP的背包解决方案中存在一个错误。可能是罪魁祸首?

时间:2019-01-05 04:55:04

标签: python dynamic-programming knapsack-problem

我正在使用Python中的DP解决背包问题。这是我填写表格的方式(下面的代码)。问题是,我只填充第i + 1列,但第i列也发生了变化。我很确定我没有编写任何命令来更改列i的值。

我在几种情况下打印了表格,以找出罪魁祸首在哪里。我找不到它,并且我确定最后一行(填充命令)有问题。但是呢?

  table = []
table.append([0] *(容量+1))

对于(项目)中的项目:
    table.append(table [item.index])
    我= item.index
    对于范围内的k(item.weight,capacity + 1):
        table [i + 1] [k] = max((table [i] [k]),(item.value +(table [i] [k-item.weight]))))
 

例如,如果我的背包容量为11,而我只有一件重量为4且值为8的物品,则表[0]应保留为[0,0,0,0,0,0,0,0,0,0 ,0、0]和table [1]应该为[0、0、0、0、8、8、8、8、8、8、8、8]。相反,在(仅)迭代的最后,我得到了table [0] = [0,0,0,0,8,8,8,8,16,16,16,16]和table [1] = [0,0,0,0,8,8,8,8,16,16,16,16]。

很显然,表[0]的值已更改。但是我无意中在哪一行编程过更改它?

0 个答案:

没有答案