早教吧 育儿知识 作业答案 考试题库 百科 知识分享

把一组长度为偶数数列,平均分成2组,怎样分使得|sum(a)-sum(b)|最小.最好是用python写,C++等其他语言的麻烦大虾们注释详细点,

题目详情
把一组长度为偶数数列,平均分成2组,怎样分使得|sum(a)-sum(b)|最小.最好是用python写,C++等其他语言的麻烦大虾们注释详细点,
▼优质解答
答案和解析
我也是正在学习python,所以如果有什么地方写得不对请指教.
我写的算法比较简单,就是总假设list2>list1不然就反转,然后如果list2中有一个数与list1中的数差小于公差,就将两个数交换.
def divide(list):
list1 = list[:-len(list)//2]
list2 = list[len(list)//2:]
dec = sum(list2) - sum(list1)
while (dec != 0):
if dec < 0:
list1,list2 = list2,list1
dec = -dec
flg = True
for index1 in range(len(list)//2):
for index2 in range(len(list)//2):
numDec = list2[index2] - list1[index1]
if numDec > 0 and numDec
看了把一组长度为偶数数列,平均分成...的网友还看了以下: