考虑我们有:
size of array = 5
pairs= 3
array= 1 2 3 4 5
我们需要将其划分为以下可能的子列表:
[(1,2,3),(4),(5)]
[(1),(2,3,4),(5)]
[(1),(2),(3,4,5)]
[(1,2),(3,4),(5)]
[(1),(2,3),(4,5)]
假设是否:
size of array = 5
pairs= 2
array= 1 2 3 4 5
我们需要将其划分为以下可能的子列表:
[(1,2,3,4),(5)]
[(1),(2,3,4,5)]
[(1,2),(3,4,5)]
[(1,2,3),(4,5)]
我尝试过的代码:
l1=[1,2,3,4,5]
from itertools import permutations
l2 = permutations(l1)
l3 = [[sum([x[0], x[1]]), sum([x[2], x[3]]),x[4]] for x in l2]
max_arr=[]
for arr in l3:
max_arr.append(max(arr))
print(min(max_arr))
问题来源:stackoverflow
要生成所有列表分区,您可以列出parts-1
一和size-parts
零。(注意,我使用parts
而不是pairs
作为更合适的名称)。
然后生成该列表的排列(例如,使用itertools
),并且对于每个排列,在索引为1之后分离初始列表。(请注意,此类排列有Cnk(size-1,parts-1)
)。
例如,结果[0,1,1,0]
对应于分区[[1,2 ,,(3),(4,5)]
(在第一项和第二项之后的划分列表)
这是“星条”原则的应用
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。