когда я запускаю эту программу, я получаю индекс из-за ошибки диапазона. что я сделал не так, почему не работает
def knapsack(p, w, capacity, idx):
if capacity <= 0 or 0 > idx >= len(p):
return 0
profit_1 = 0
if w[idx] <= capacity:
profit_1 = p[idx] + knapsack(p, w, capacity - w[idx], idx + 1)
profit_2 = knapsack(p, w, capacity, idx + 1)
return max(profit_1, profit_2)
p = [31, 26, 72, 17]
w = [3, 1 , 5, 2]
print(knapsack(p, w, 7, 0))
В базовый регистр не входит
Ошибка
Traceback (most recent call last):
File "C:/Users/komat/PycharmProjects/DSA/divide&conquer/knapsack.py", line 14, in <module>
print(knapsack(p, w, 7, 0))
File "C:/Users/komat/PycharmProjects/DSA/divide&conquer/knapsack.py", line 6, in knapsack
profit_1 = p[idx] + knapsack(p, w, capacity - w[idx], idx + 1)
File "C:/Users/komat/PycharmProjects/DSA/divide&conquer/knapsack.py", line 6, in knapsack
profit_1 = p[idx] + knapsack(p, w, capacity - w[idx], idx + 1)
File "C:/Users/komat/PycharmProjects/DSA/divide&conquer/knapsack.py", line 7, in knapsack
profit_2 = knapsack(p, w, capacity, idx + 1)
File "C:/Users/komat/PycharmProjects/DSA/divide&conquer/knapsack.py", line 6, in knapsack
profit_1 = p[idx] + knapsack(p, w, capacity - w[idx], idx + 1)
File "C:/Users/komat/PycharmProjects/DSA/divide&conquer/knapsack.py", line 5, in knapsack
if w[idx] <= capacity:
IndexError: list index out of range