您的位置:首页 > 编程语言 > Python开发

python面试题(1)

2015-07-01 21:46 281 查看
有两个序列a,b大小都为n,序列元素的值任意整形数,无序;
a = [1,24,6,100,7]
b = [5,3,200,55,2]

要求:通过交换a,b中的元素,使序列a元素的和与序列b元素的和之间的差最小。

解:

#coding:gbk
import itertools  #载入迭代模块

A = [1,24,6,100,7]
B = [5,3,200,55,2]
C = A+B             #合并列表

LC = list(itertools.permutations(C,5))   #生成所有组合

Total = sum(C)      #总和
Cha_Min = Total     #初始化最小差
Result = []         #初始化结果列表
for i in LC:        #遍历所有组合
Cha = abs(Total-sum(i)-sum(i))       #计算差
if Cha < Cha_Min:                    #如果最小差,则更新结果
Result_A = list(i)
Cha_Min = Cha

for i in Result_A:  #从总列表中删除Result_A列表中元素
C.remove(i)

Result_B = C       #赋值Result_B

print 'Result_A = ',Result_A
print 'Result_B = ',Result_B
print 'Min_difference = ',Cha_Min


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: