将上千个数字分成6组,每组之和占总和的20%.15%
def deal(data, flag):
a = []
for i in data:
if i >= flag:
return [i]
elif a == []:
a.append([i])
else:
a = a + [k + [i] for k in a if sum(k) + i <= flag]
a.append([i])
# return sorted(a,key=sum)[-1]
target = sum(max(a, key=sum))
return list(filter(lambda x: sum(x) == target, a))
if __name__ == '__main__':
c = [2, 1, 3, 1, 5, 2, 3, 4]
flag = sum(c) // 3
res = deal(c, flag)
print(res)
如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632