besaudade4me 2022-12-19 12:21 采纳率: 100%
浏览 82
已结题

cf组队比赛最小分差问题

以下为原问题描述(摘自牛客网):
已知他们的 CrossFire 分数分别为 a, b, c, d,现在想要把他们两两分为一队,使得两队的实力差尽量小。这里定义两队的实力差为每队的 CrossFire 分数之和的差值,现在他们想要知道这个实力差最小是多少。
输入:
仅一行,包含四个整数 a, b, c, d 。中间以空格分隔,
输出:
分别表示四个人的 CrossFire 分数。在一行输出一个整数,表示两个队伍实力差的最小值。

我的底层逻辑是四个数中最大和最小的数字之和减去中间两数之和就是其最小分差。
以下是我的代码:

#include<stdio.h>

int main()
{
    int a[10];
    int i;
    for(i=0; i<4; i++)
        scanf("%d", &a[i]);
    int max, min, note1, note2;
    max = a[0];
    min = a[0];
    for(i=0; i<4; i++)
    {
        if(max < a[i])
        {
           max = a[i];
           note1 = i;
        }
        if(min > a[i])
        {
           min = a[i];
           note2 = i;    
        }
    }
    int j, dif[10], MAX;
    for(i=0; i<4; i++)
    {
        for(j=0; j<4; j++)
        {
            dif[i] = a[note1] + a[note2] - (a[i]+a[j]);
        }
        MAX = dif[0];
        if(MAX < dif[i])
           MAX = dif[i];
    }
    printf("%d", MAX);

    return 0;
}

但是在自测输入时显示正确率很低,请大家帮我看看问题出在哪儿,并给予修改建议。

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-12-19 13:09
    关注

    note1和note2也要初始化为0才行。
    MAX计算也有问题,你在输入四个数的时候,就将四个数的总和计算出来,然后总和减去max和min就是另外两个数之和啦。最后将max+min-另外两个数之和,它的绝对值就是最小差值

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 已采纳回答 12月19日
  • 创建了问题 12月19日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助