题目描述:
英雄联盟是一款十分火热的对战类游戏。每一场对战有10位玩家参与,分为两组,每组5人。每位玩家都有一个战斗力,代表着这位玩家的厉害程度。为了对战尽可能精彩,我们需要把玩家们分为实力尽量相等的两组。一组的实力可以表示为这一组5位玩家的战斗力和。现在,给你10位玩家的战斗力,请你把他们分为实力尽量相等的两组。请你输出这两组的实力差。
解答要求 时间限制:1000ms, 内存限制:64MB
输入
10个整数(范围在[1,10000]之间)
输出
最小的实力差
样例
输入样例 1 复制
1 2 3 4 5 6 7 8 9 10
输出样例 1
1
#include<stdio.h>
#include<string.h>
int main() {
int a[10] = {0};
int i = 0;
int sum = 0;
int all = 0;
int c0, c1, c2, c3=0;
int sum_all = 0;
int chazhi = 0;
int min = 10000;
for (i = 0; i < 10; i++) {
scanf_s("%d", &a[i]);
}
for (i = 0; i < 10; i++) {
//printf("a[%d] is %d\r\n",i,a[i]);
sum += a[i];
//printf("sum is %d\r\n", sum);
}
//任意5个数组合,然后用all - 5个数组合
for (c0 = 1; c0 < 10; c0++)
for (c1 = c0 + 1; c1 < 10; c1++)
for (c2 = c1 + 1; c2 < 10; c2++)
for (c3 = c2 + 1; c3 < 10; c3++) {
all = a[0] + a[c0] + a[c1] + a[c2] + a[c3];
sum_all = sum - all;
chazhi = abs(sum_all - all);
if (min > chazhi) {
min = chazhi;
}
}
printf("%d\r\n", min);
}