这种方法使用简单的过滤器过滤排列。
import itertoolsgroups = [(1,2),(3,4,5),(6,7)]groupdxs = [i for i, group in enumerate(groups) for j in range(len(group))]old_combo = []for dx_combo in itertools.permutations(groupdxs): if dx_combo <= old_combo: # as simple filter continue old_combo = dx_combo iters = [iter(group) for group in groups] print [next(iters[i]) for i in dx_combo]
我们在这里所做的是查找多集的置换。(在这种情况下,多重集为
groupdxs。)这是
一篇详细介绍O(1)算法的论文。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)