马上又到双十二了,我也在当当网上选了一些书准备下单了,但是有个问题难住我了,我选了9多本价格不同的书,并且领了一张满200减40的券,怎么让我这40块券最大化利用呢,也就是说买的商品要比200块高,但是高的越少越好。
为了解决这个问题,我写了个小程序来算一下:
import itertools
data=[28.4,15,26,17.3,22.5,20.7,130.9,37.4,105.4] # 商品价格
for i in range(2,len(data)):
# 遍历所有组合
c=itertools.combinations(data,i)
for i in c:
chazhi = sum(i)-200
if chazhi<10 and chazhi>0:
print(i,'----',sum(i))
输出结果:
(28.4, 15, 26, 130.9) ---- 200.3
(28.4, 26, 17.3, 130.9) ---- 202.60000000000002
(28.4, 26, 22.5, 130.9) ---- 207.8
(28.4, 26, 20.7, 130.9) ---- 206.0
(28.4, 22.5, 20.7, 130.9) ---- 202.5
……
(15, 26, 17.3, 22.5, 20.7, 105.4) ---- 206.9
那么剩下的事情就简单了,从上面的所有结果中,挑一个喜欢的组合就下单了。