擅长:python、mysql、java
<p>我认为这有一个简单的解决办法,如果你把循环放在第一个if下面</p>
<pre class="lang-py prettyprint-override"><code>if n == 0 or W == 0:
return 0
t = [[-1 for x in range(W + 1)] for j in range(n + 1)]
if t[n][W] != -1:
return t[n][W]
elif wt[n-1] <= W:
t[n][W] = max(val[n-1]+knapSack(W-wt[n-1],wt,val,n-1),knapSack(W,wt,val,n-1))
return t[n][W]
elif wt[n-1] > W:
t[n][W] = knapSack(wt, val, W, n-1)
return t[n][W]
</code></pre>