python求组合数_python基础,求在约束下,组合数的最大值

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)

程序流程图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值