- 論壇徽章:
- 0
|
上面我有發(fā)表我的算法,但是有些錯誤沒改過來,現(xiàn)在這個是改進(jìn)的,應(yīng)該沒什么問題了
#include<stdio.h>
#define SIZE 3
int
sumb (int m[], int n)
{
int i;
int sum = 0;
for (i = 0; i < n; i++)
sum += m[ i ];
return sum;
}
main ()
{
int min;
int tmp;
int i;
int j;
int this;
int a[SIZE] = {
1, 7, 3
};
int b[SIZE] = {
10, 15, 4
};
min = sumb (a, SIZE) - sumb (b, SIZE);
min = min > 0 ? min : (-1) * min;//初始化min,此時(shí)min為兩個數(shù)組總和之差
for (i = 0; i < SIZE; i++)
for (j = 0; j < SIZE; j++)
{
this = sumb (a, SIZE) - sumb (b, SIZE) + 2 * (b[ j ] - a[ i ]);
this = this >= 0 ? this : (-1) * this;
if (this < min)//如果this不小于min的話就不進(jìn)行交換
{
min = this;
if (min == 0)//如果找到差值為0的組合,則提前退出
break;
tmp = a[ i ];
a[ i ] = b[ j ];
b[ j ] = tmp;
}
}
printf ("Min=%d\n", min);
} |
|