|
呵呵,刚来到javaeye,先发个文章看看。
------------------------------------------------------
有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;
要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
------------------------------------------------------
题目就是这样,我看也有不少人在解答,但是我觉得根本用不了10分钟,或者说我用了投机的办法了,呵呵,我3分钟搞定,2分钟思考,1分钟代码。
以下是我的解答(推荐关心的人先自己看一下在看我的解答了)
# -*- coding: utf-8 -*-
#定义2个无序的整数列
a = [1,34,5,3,66,866,98,76]
b = [3,43,565,232,545,2,4,3]
#a b 的大小都是n
n = len(a)
#连接2个序列
c = a+b
#对新序列进行从小到大的排列
c.sort()
#从新取前面n个大小给a
a = c[:n]
#从新取后面n个大小给b
b = c[n:]
#打印a序列和减去b序列和
print sum(a) - sum(b)
#原理 很简单 因为a序列的和 是排序后最小的 减去 排序后最大的 所以 都是负数 呵呵 |
|
|