以下为原问题描述(摘自牛客网):
已知他们的 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;
}
但是在自测输入时显示正确率很低,请大家帮我看看问题出在哪儿,并给予修改建议。