我正在尝试选择最大的权重,以填充一个可以支持权重C的框。为此,我对权重V的列表进行了排序,我将其从n读取为0(索引),然后对于每个n,我想计算出不超过C的每个最大值。我用发现的每个等于C或n的最接近权重的最大值来填充表T。
谢谢您的帮助,我已经花了很多时间来编写代码,但我仍然迷失在最后,我想通过递归验证V [n]的总和是否太小高,我认为我的代码结尾没有考虑周全。
V=[1,2,3,4,5,6,7,8,9,10]
C = 9
def Vmax(V,n,C,T):
if n ==-1:
return(T)
else:
if C < V[n]:
Vmax(V,n-1,T)
else:
if V[n]== C:
T.append(V[n])
Vmax(V,T)
# Troubles starts here
elif V[n] < C:
for k in range(1,n):
if k - n == -2:
T.append(V[n])
if V[n] + Vmax(V,n-k,T) < C:
T.append(V[n] + Vmax(V,T))
else:
Vmax(V,T)
print(Vmax(V,len(V)-1,T))```