- 论坛徽章:
- 0
|
- int abs(int n)
- {
- return n >= 0 ? n : -n;
- }
- int sum(int *array, int count)
- {
- int sum = 0;
- for (int i = 0; i < count; i++)
- sum += array[i];
- return sum;
- }
- void exchange(int *array1, int *array2, int count)
- {
- int sum1 = sum(array1, count);
- int sum2 = sum(array2, count);
- if (sum1 == sum2)
- return;
-
- int diff = abs(sum1 - sum2);
- for (int i = 0; i < count; i++) {
- for (int j = 0; j < count; j++) {
- int s1 = sum1 + array2[j] - array1[i];
- int s2 = sum2 + array1[i] - array2[j];
- if (abs(s1 - s2) < diff) {
- int tmp = array1[i];
- array1[i] = array2[j];
- array2[j] = tmp;
- sum1 = s1;
- sum2 = s2;
- diff = abs(sum1 - sum2);
- if (diff == 0)
- return;
- }
- }
- }
- }
复制代码
[ 本帖最后由 svenwang 于 2006-11-17 23:41 编辑 ] |
|