0
def fastMaxVal(w, v, i, aW):
global numCalls
numCalls += 1
try: return m[(i, aW)]
except KeyError:
if i == 0:
if w[i] <= aW:
m[(i, aW)] = v[i]
return v[i]
else:
m[(i, aW)] = 0
return 0
without_i = fastMaxVal(w, v, i-1, aW)
if w[i] > aW:
m[(i, aW)] = without_i
return without_i
else:
with_i = v[i] + fastMaxVal(w, v, i-1, aW - w[i])
res = max(with_i, without_i)
m[(i, aW)] = res
return res
def maxVal0(w, v, i, aW):
m = {}
return fastMaxVal
weights = [1, 1, 5, 5, 3, 3, 4, 4]
vals = [15, 15, 10, 10, 9, 9, 5, 5]
numCalls = 0
res = maxVal0(weights, vals, len(vals) - 1, 8)
print ('max Val =', res, 'number of calls =', numCalls)
該程序是關於01Knapsack問題。我使用決策樹來解決問題。但是,我運行該程序並得到以下結果。輸出錯誤是0x03BB7390
最大的Val =在通話0x03BB7390數函數fastMaxVal = 0
這有什麼錯我的計劃?
這不是一個錯誤。您只需從'maxVal0'返回*函數*'fastMaxVal'。你必須*調用函數*。 –
請說出您正在使用的語言,並將錯誤減少到導致問題的代碼。看看你想要做什麼你的代碼也很有幫助 –