我正在使用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]的值已更改。但是我无意中在哪一行编程过更改它?