有两个序列a,b,大小都为n,序列元素的值任意×××数,无序;
要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
#!/usr/bin/env python
a = [1000, 999, 998, 997, 996, 995]
b = [994, 993, 992, 3, 2, 1]
#a = [3, 8, 11]
#b = [1, 2, 7]
x = y = 0
min = abs((sum(a)) - (sum(b)))
tag = 1
#num = 0
while tag:
old = min
while x < len(a):
while y < len(b):
a[x], b[y] = b[y], a[x]
# num = num + 1
print a
print b
tmp = abs((sum(a)) - (sum(b)))
if min > tmp:
min = tmp
else:
a[x], b[y] = b[y], a[x]
y = y + 1
x = x + 1
y = 0
if min == old:
tag = 0
else:
x = y = 0
print min
#print num
(脚本见附近)
转载于:https://blog.51cto.com/myunix/1331612