rgdggf 2021-08-21 12:47 采纳率: 80%
浏览 520
已结题

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

篮球赛,10人,每个人有一个战斗力n1-n10 分成两组(人数相等),战斗力差值最小

输入:1 2 3 4 5 6 7 8 9 10

输出:1

  • 写回答

3条回答 默认 最新

  • 关注

    你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

    #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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日
  • 创建了问题 8月21日

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog