1
values = {1, 2, 3, 4, 5, 6, 7, 8, 9};
inSack = {}
total = 0;
function knapsack(i, weight)
if weight == 0 then
print("Success The following combination is in the knapsack:");
for i = 1, #inSack do
total = total + inSack[i];
print(inSack[i]);
end
print("Totaling to Input of: "..total)
return
elseif i <= 0 then
print("Sorry your weight combination, is not possible with the current values ");
return;
end
if values[i] > weight then
return knapsack(i-1, weight);
else
inSack[#inSack + 1] = values[i];
return knapsack(i-1, weight - values[i]);
end
end
-- Waits for user input to terminal
local number = io.read()
knapsack(#values, tonumber(number));
내 파이썬 코드
values = [1,2,3,4,5,6,7,8,9]
inSack = []
total = 0
def knapsack(i,weight):
if weight == 0:
print("success: ")
for i in inSack:
total = total +inSack[i]
print(inSack[i])
print("totaling to input of: "+total)
return
elif i<= 0:
print("didn't work yo")
return
if values[i] > weight:
return knapsack(i-1, weight)
else:
inSack[inSack+1] = values[i]
return knapsack(i-1, weight - values[i])
number = raw_input("Enter a number: ")
knapsack(values, number)
에 내가지고있어 오류가 발생합니다. 내가 뭘 만들고있는 실수 야?
역 추적
Traceback (most recent call last):
File "lua.py", line 23, in <module>
knapsack(values, number)
File "lua.py", line 16, in knapsack
if values[i] > weight:
TypeError: list indices must be integers, not list
'inSack [inSack + 1] = 값 것 [I] '리스트 있어야 inSack''1을 가산 ? 'inSack.append (values [i])'대신에? :) 또한 forSack in : inSack 요소를 반복합니다. 색인이 아닙니다. 'for 색인, inSack의 요소 :'대신. – Kamiccolo
'i'가리스트라고 가정하면,이 비교는 의미가 없습니다 :'i <= 0'. (루프 in'in i in in :'에서, 실제로'i '에 전달 된 원래 항목을 마스크했습니다.) –
루아 테이블을 파이썬리스트로 사용하는 것을 그만 둡니다. : P – Shashank