python表示形式教科书

时间:2015-04-13 01:25:47

标签: python syntax pseudocode

我的算法教科书中有一段代码,我很难理解它。

K(0) = 0
for w = 1 to W
    K(w) = max{K(w - w_i)+vi:w_i<=w}
return K(W)

我很困惑第3行发生了什么?冒号在这里意味着什么?这可以用不同的方式写出来吗?

1 个答案:

答案 0 :(得分:1)

这看起来不像python。似乎K应该是一个数组,但是python中的索引用方括号表示,所以K[0] = 0

并且for w = 1 to W根本不在python中工作,它更像是这样:for w in range(1, W+1):

关于伪代码的作用:看起来对于K的每个元素,它计算所有先前值的最大值并添加vi。

for w in range(1, W+1):
    K[w] = max(K[w - w_i] + vi for w_i in range(1, w+1))

但是vi似乎没有变化,所以对于正vi,这只产生一个线性上升的数组(即[0, 2, 4, 6, ...vi = 2),而对于负数,它只是重复vi和结束:[0, -3, -3, -3, ... vi = -3

由于它只返回数组的最后一个值,因此可以简化为

return W*vi if vi>0 else vi