一个数组均分两组,差值最小 c语言

篮球赛,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");
}

img

简单啊,先排序,再蛇形排列就可以了
1 2
4 3
5 6
8 7
9 10

int main()
{
    int a[10];
    int b[5],c[5];
    int i,j;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=0;i<9;i++)
          for(j=0;j<9-i;j++)
          {
                if(a[j] > a[j+1])
                {
                      int t = a[j];
                      a[j] = a[j+1];
                      a[j+1] = t;
                }
          }
    int k = 1;
    for(i=0;i<10;i+=2)
    {
        if(k > 0)
        {
              b[i/2] = a[i];
              c[i/2] = a[i+1];
        }
        else
        {
              b[i/2] = a[i+1];
              c[i/2] = a[i];
        }
        k*=-1;
    }
    printf("第一组为:");
    for(i=0;i<5;i++)
        printf("%d ",b[i]);
    printf("\n");
    printf("第二组为:");
    for(i=0;i<5;i++)
          printf("%d ",c[i]);
    printf("\n");
    return 0;
}

看看? 交换两个数组使两个数组和的差最小_Challenge Next Challenge-CSDN博客 今天又看见了这个题目,好像上次是李灾跟我说腾讯面他的时候问了这个问题的。想了半天,在网上也看了半天,发现一个不错的算法,先帖出来:^ ^ /*    有两个数组a,b,大小都为n,数组元素的值任意整形数,无序;    要求:通过交换a,b中的元素,使[数组a元素的和]与[数组b元素的和]之间的差最小。*//*    求解思路:    当前数组a和数组b的 https://blog.csdn.net/kittyjie/article/details/4386742