篮球赛,10人,每个人有一个战斗力n1-n10 分成两组(人数相等),战斗力差值最小
输入:1 2 3 4 5 6 7 8 9 10
输出:1
篮球赛,10人,每个人有一个战斗力n1-n10 分成两组(人数相等),战斗力差值最小
输入:1 2 3 4 5 6 7 8 9 10
输出:1
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)
#include<stdio.h>
#include<math.h>
void main() {
int n=10/2,i,j;
int a[n];
int b[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
int diff=0;
for(i=0;i<n;i++){
diff+=a[i]-b[i];//计算两组数的差
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
int tp=a[i]-b[j];//计算两组数中单个元素的差值
int t=tp-diff;//单个元素差值和数组的差值比较
if(t*tp<0){ //以此条件判断是否需要交换
int ex=a[i];
a[i]=b[j];
b[j]=ex;
diff-=2*tp;//计算数据交换后两个数组的差值
}
}
}
printf("战斗力差值最小是: %d\n", abs(diff));
for(int i=0;i<n;i++)
printf("%d ", a[i]);
printf("\n");
for(int i=0;i<n;i++)
printf("%d ", b[i]);
printf("\n");
}