python基础
求在约束下,组合数的最大值
在容量C的约束下,求组合的最大值
比如
容量是10
[1 3 11]
组合的最大值是1+3=4
容量是90
[10 20 30,100]
组合的最大值是10+20+30=60
代码
"""给程序画流程图是很有必要的"""
list1=[10,20,30,100]
C=90
def decide(list1,C):#list1在约束条件下,求最大价值
print("list1=",list1,"C=",C)
if(len(list1)==0):
return 0
if(len(list1)==1):
v=list1[0] if list1[0]<=C else 0
return v
#长度超过1,分类:把第一个元素选入,不选入,然后取最大值。
if(len(list1)>1):
v1=list1[0]#判断一下第一个元素能不能加入
if v1>C:#如果第一个大于C,只有第2种情况.
v1=0
else:
print("第一个元素",v1)
v1=v1+decide(list1[1:],C-v1)
print("v1=",v1)
print("list1=",list1)
print("不选择第一个元素")
v2=decide(list1[1:],C)
print("v2=",v2)
result=max(v1,v2)
print("result",result)
return result
decide(list1,C)
程序流程图