- 论坛徽章:
- 0
|
穷举法,不排序
#include <stdio.h>
#include <math.h>
int a[] = {1,2,3,4,5};
int b[] = {6,7,8,9,10};
int main()
{
int i=0,j=0,dif=0,length=0,temp=0,mina,minb,ab;
length = sizeof(a)/sizeof(int);
for(i=0;i<length;i++){
dif +=a[i]-b[i];
}
while(dif!=0)
{
temp = abs(dif-(a[0]-b[0])*2);
mina = 0;minb=0;mina=0;minb=0;
for(i=0;i<length;i++)
{
for(j=0;j<length;j++)
{
ab = abs(dif-(a[i]-b[j])*2);
if(ab<temp) {temp =ab; mina=i;minb=j;}
}
}
if(abs(dif-(a[mina]-b[minb])*2)<abs(dif))
{
dif=dif-(a[mina]-b[minb])*2;
temp = a[mina];
a[mina] = b[minb];
b[minb] = temp;
}else {break; printf("break");}
}
for(i=0;i<length;i++){
printf("%d ",b[i]);
}
printf("\n");
system("pause");
return 0;
} |
|