- 论坛徽章:
- 0
|
呵呵 把我的想法用代码实现了!
思想:
a b合并为c【】
c[]排序,取最大的放入a,次大放入b,然后剩下的最大放入b,最小放入a,比较a当前和与b当前和,c中剩下的最大放入和小的,最小放入和大的,。。。。。直到分配完
程序:
#include<stdio.h>
#include<stdlib.h>
int cmp ( const void *a , const void *b );
int main(void)
{
int a[5] = {5,6,-11,2,3};
int b[5] = {7,8,9,-15,1};
int c[10];
int i,suma = 0,sumb = 0;
for(i = 0;i < 5;i++)
c = a;
for(i = 5;i < 10;i++)
c = b[i - 5];
qsort(c,10,sizeof(int),cmp);
a[0] = c [9];
b[0] = c[8];
i=1;
while(i<5)
{
suma += a[i-1];
sumb += b[i-1];
if(suma < sumb)
{
a = c[9-i-1];
b = c[i-1];
}
else
{
a = c[i-1];
b = c[9-i-1];
}
i++;
}
for(i = 0;i < 5;i++)
printf("%3d",a);
printf("\n");
for(i = 0;i < 5;i++)
printf("%3d",b);
printf("\n");
return 0;
}
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
结果:
9,-15,6,5,2
8,7,-11,1,3
呵呵 还是比较正确的,好像效率也不错啊。 |
|