码迷,mamicode.com
首页 > 编程语言 > 详细

python面试题(1)

时间:2015-07-01 23:31:13      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:

有两个序列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

技术分享

python面试题(1)

标签:

原文地址:http://www.cnblogs.com/welling-wei/p/4614623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!