我正在尝试选择最大的权重,以填充一个可以支持权重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, C, T)
else:
if V[n]== C:
T.append(V[n])
Vmax(V, n-1, C, 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, C, T) < C:
T.append(V[n] + Vmax(V, n-k, C, T))
else:
Vmax(V, n-1, C, T)
print(Vmax(V, len(V)-1, C, T))```