python - 列表索引超出范围,python中的最大战利品问题
问题描述
# Uses python3
import sys
def BestItem(n, v, w):
maxVW = 0
bestItem = 0
for i in range(n):
if w[i] > 0:
if v[i] / w[i] > maxVW:
maxVW = v[i] / w[i]
bestItem = i
return bestItem
def get_optimal_value(n, Wt, v, w):
amount = [0] * n
value = 0
for i in range(n):
i = BestItem(n, v, w)
a = min(w[i], Wt)
value = value + a * v[i] / w[i]
w[i] = w[i] - a
amount[i] = amount[i] + a
Wt = Wt - a
if Wt == 0 or w == [0] * n:
return value
if __name__ == "__main__":
data = list(map(int, sys.stdin.read().split()))
n, Wt = data[0:2]
v = data[2:(2 * n + 2):2]
w = data[3:(2 * n + 2):2]
opt_value = get_optimal_value(n, Wt, v, w)
print("{:.10f}".format(opt_value))
我构建了此代码,但不断收到“列表索引超出范围”的错误消息。这是最大战利品问题之一。但我不知道我哪里出错了,因为我没有为任何索引定义任何范围。
解决方案
推荐阅读
- java - 在父级或祖先级上下文中找不到方法 StartRec(View)
- reactjs - 我正在尝试使用 React-Router 将博客组件链接到作者组件
- json - “JSON”类型的值没有成员“arrayOf”
- javascript - NodeJS:在对象中创建条件属性的方法比自调用函数更短?(ES5 或 ES6)
- arduino - arduino nano 可以从两个不同的应用程序中获取数据吗?
- javascript - Spring从键值JSON绑定AJAX表单数据
- c# - 检查 ID 列表是否有效的更好方法(EF Core)
- javascript - 关于日期时间查询的sqlite
- c++ - std::sort 一个实现了移动构造函数的类
- c# - 在 Azure 逻辑应用中反序列化 ServiceBus 内容