Python符号形式文本

2024-04-20 09:23:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我从我的算法课本上截取了一段代码,我很难理解它

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

我不明白第三行发生了什么,这里的冒号是什么意思?这可以用不同的方式写吗


Tags: to代码算法forreturn方式maxvi
1条回答
网友
1楼 · 发布于 2024-04-20 09:23:08

这看起来不像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,它只是反复重复vi:[0, -3, -3, -3, ...表示vi = -3

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

return W*vi if vi>0 else vi

相关问题 更多 >