http://bbs.chinaunix.net/thread-855126-1-1.html
有两个数组a,b,大小都为n,数组元素的值任意,无序;
要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小
我们假设有数据:
a: 6 20 100
b: 19 20 70
在网站上看到有如下解法:
解法 1,
把a,b 2数组的元素放到数组3(2n大小) 中进行排序, a 先取最小的,b先取次小的, 然后根据a,b已取元素和的大小来决定谁来取剩下元素中最小的。策略是, 已取得的所有元素之和大的来取C中剩下元素中的最小者。如此反复,直到取完。每次都是a,b各取一个。 |
按该方法:
则结果为:
a: 6 50 100
b: 19 40 70
差值为:27.
解法2.
按此种方案,则:
a: 6 40 100
b: 19 50 70
差值为:7