篮球比赛
描述
篮球(5V5)比赛中,每个球员拥有一个战斗力,每个队伍的所有球员战斗力之和为该队伍的总体战斗力。现有10个球员准备分为两队进行训练赛,教练希望2个队伍的战斗力差值能够尽可能的小,以达到最佳训练效果。给出10个球员的战斗力,如果你是教练,你该如何分队,才能达到最佳训练效果?请输出该分队方案下的最小战斗力差值。
示例1:
输入
10 9 8 7 6 5 4 3 2 1
输出
1
说明
1 2 5 9 10分为一队,3 4 6 7 8分为一队,两队战斗力之差最小,输出差值1。备注:球员分队方案不唯一,但最小战斗力差值固定是1
法一
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int num = 10;
int count = 0;
int[] arr = new int[num];
for (int i = 0 ; i < num ; i++) {
arr[i] = sc.nextInt();
count += arr[i];
}
int min = Integer.MAX_VALUE;
for (int i = 0 ; i < 6 ; i++) {
for (int j = i + 1 ; j < 7 ; j++) {
for (int k = j + 1 ; k < 8 ; k++) {
for (int l = k + 1 ; l < 9 ; l++) {
for (int m = k + 1; m < 10 ; m++) {
int sum = arr[i] + arr[j] + arr[k] + arr[l] + arr[m];
min = Math.min(min, Math.abs(count - sum * 2));
}
}
}
}
}
System.out.println(min);
}
}
}