有两个序列a,b大小都为n,序列元素的值任意整形数,无序;
a = [1,24,6,100,7]
b = [5,3,200,55,2]
要求:通过交换a,b中的元素,使序列a元素的和与序列b元素的和之间的差最小。
解:
1 #coding:gbk 2 import itertools #载入迭代模块 3 4 A = [1,24,6,100,7] 5 B = [5,3,200,55,2] 6 C = A+B #合并列表 7 8 LC = list(itertools.permutations(C,5)) #生成所有组合 9 10 Total = sum(C) #总和 11 Cha_Min = Total #初始化最小差 12 Result = [] #初始化结果列表 13 for i in LC: #遍历所有组合 14 Cha = abs(Total-sum(i)-sum(i)) #计算差 15 if Cha < Cha_Min: #如果最小差,则更新结果 16 Result_A = list(i) 17 Cha_Min = Cha 18 19 for i in Result_A: #从总列表中删除Result_A列表中元素 20 C.remove(i) 21 22 Result_B = C #赋值Result_B 23 24 print ‘Result_A = ‘,Result_A 25 print ‘Result_B = ‘,Result_B 26 print ‘Min_difference = ‘,Cha_Min
时间: 2024-09-26 22:31:15