我现在很难解决其中一个编程难题。我有一个字典,其中有项目(用i#表示)和价值作为项目的价格。‘items可以组合成组合式包。
{('i2', 'i3'): '4', ('i1',): '1',('i1', 'i3', 'i4'): '6.5', ('i3',): '3',('i1', 'i2', 'i3'): '4.5', ('i2',): '2', ('i4',): '4'}我想为给定的输入项返回最低价格。如果用户从组合式套餐中获得最低价格的额外商品,他将不会有任何问题:
有人知道该怎么做吗?使用哪种算法?
谢谢你,苏尼尔
发布于 2012-11-29 18:40:35
使用itertools.combinations()生成x包的组合。然后,检查每个组合是否包括所需的项目,并找到最低价格的有效组合。
若要查找4种不同包装的所有组合,请执行以下操作:
d = {('i2', 'i3'): '4', ('i1',): '1',('i1', 'i3', 'i4'): '6.5', ('i3',): '3',
('i1', 'i2', 'i3'): '4.5', ('i2',): '2', ('i4',): '4'}
from itertools import combinations
combos = list(combinations(d, 4)) # you should try combos of different lenghts,
# from 1 to the number of desired items为了举例说明,让我们看看其中的一个组合。print combos[0]给出:
(('i2', 'i3'), ('i1',), ('i1', 'i3', 'i4'), ('i3',))
为了得到这个组合的价格:
sum([float(d[item]) for item in combos[0]])这给了14.5
我让你自己找最便宜的合适的组合:)
https://stackoverflow.com/questions/13632343
复制相似问题