我有几个人在做x选择,在n可能性中按优先顺序排列。每个可能性只能分配一次
我想找到问题的所有解决方案,这样每个人都可以选择最低级别xmin
例如,对于x=3
和说n=20
,10个人在做选择:
g1 = (3, 10, 11) # g1 makes choices 3, 10 and 11 in order of preference
g2 = (10, 9, 5)
g3 = (10, 15, 3)
g4 = (5, 9, 14)
g5 = (10, 3, 7)
...
g10 = (4, 19, 2)
在Python中,如何编写问题以找到解决方案,以便所有人都有一个至少分配了级别2(xmin=2
)的选择?如果xmin=2
没有解决方案,那么第3级(xmin=3
)
我认为这与itertools
有关,但我对这个问题不太清楚
编辑:再仔细考虑一下这个问题,我想到了这样一个问题:
import itertools
xmin = 2
groups = [g1, g2, g3, g4, g5]
sample = [g[:xmin] for g in groups]
[seq for seq in itertools.product(*sample) if len(seq) == len(set(seq))]
我没有醒,答案其实很简单
最后,
itertools
一如既往地简化了生活:)使用此数据集:
以下是问题的解决方案:
如果有人有更优雅的解决方案
相关问题 更多 >
编程相关推荐