defdeal(data,flag):
a=[]for i in data:if i>=flag:return[i]elif a==[]:
a.append([i])else:
_______________________
a.append([i])
target=sum(max(a,key=sum))returnlist(filter(lambda x:sum(x)==target,a))if __name__=='__main__':
c=[2,1,3,1,5,2,3,4]
flag=sum(c)//2
res=deal(c,flag)print(res)
2,程序代码
# -*- coding: utf-8 -*-"""
Created on Mon Nov 29 08:01:27 2021
Function: 将一组数尽可能均匀地分成两堆,使两个堆中的数的和尽可能相等
@author: 小梁aixj
"""
count=0defdeal(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 ifsum(k)+i <= flag]
a.append([i])
target=sum(max(a, key=sum))returnlist(filter(lambda x:sum(x)==target, a))if __name__=="__main__":
c=[2,1,3,1,5,2,3,4]
flag=sum(c)//2
res=deal(c, flag)print(res)