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日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改