题目:
有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小。
例如:
var a = [100,99,98,1,2, 3];
var b = [1, 2, 3, 4,5,40];
最后的结果为:
var a = [1,99,98,1,2,2];
var b = [100, 3,3,4,5,40];
思路一:
首先先计算a,b中元素和之间的差绝对值ABDis,然后逐一的把a中的元素和b中的任一元素作比较,如果它们交换后的差值绝对值ABTempDis小于原来的值ABDis,那么就把a,b交换,并重新计算a和b的绝对值,这种动作反复的进行,直到a中任一的元素都不能和b中的任一元素交换为止。(其实是穷举法)
代码如下:
/*-------------------------------
Copyright by yuucyf. 2011.08.19
--------------------------------*/
#include "stdafx.h"
#include <iostream>
#include <assert.h>
using namespace std;
__int64 MakeSmallly(int *pA, int i32ALen, in