篮球比赛
编程 | 100分]篮球比赛
【篮球比赛】篮球(5V5)比赛中,每个球员拥有一个战斗力,每个队伍的所有球员战斗力之和为该队伍的总体战斗力。现有10个球员准备分为两队进行训练赛,教练希望2
个队伍的战斗力差值能够尽可能的小,以达到最佳训练效果。给出10个球员的战斗力,如果你是教练,你该如何分队,才能达到最佳训练效果?请说出该分队方案下的最小
战斗力差值。
个队伍的战斗力差值能够尽可能的小,以达到最佳训练效果。给出10个球员的战斗力,如果你是教练,你该如何分队,才能达到最佳训练效果?请说出该分队方案下的最小
战斗力差值。
输入描述:
10个篮球队员的战斗力(整数,范围[1,10000]),战斗力之间用空格分隔,如:10987654321
不需要考虑异常输入的场景。
不需要考虑异常输入的场景。
输出描述:
最小的战斗力差值,如:1
示例1
输入
10 9 8 7 6 5 4 3 2 1
输出
1
C++
/* 【篮球比赛】篮球(5V5)比赛中,每个球员拥有一个战斗力,每个队伍的所有球员战斗力之和为该队伍的总体战斗力。现有10个球员准备分为两队进行训练赛,教练希望2 个队伍的战斗力差值能够尽可能的小,以达到最佳训练效果。给出10个球员的战斗力,如果你是教练,你该如何分队,才能达到最佳训练效果?请说出该分队方案下的最小 战斗力差值。 输入描述: 10个篮球队员的战斗力(整数,范围[1,10000]),战斗力之间用空格分隔,如:10987654321 不需要考虑异常输入的场景。 输出描述: 最小的战斗力差值,如:1 示例1: 输入 10 9 8 7 6 5 4 3 2 1 输出 1 */ #include<bits/stdc++.h> using namespace std; void splits(string& inputs, vector<int>& input, string pattern); int main() { //暴力破解 string inputs; getline(cin, inputs); vector<int> input; string pattern = " "; splits(inputs, input, pattern); int mi = INT_MAX; int sum = 0; for (int i = 0; i < input.size();i++) { sum += input[i]; } for (int i = 0; i < input.size() - 4; i++) { for (int j = i + 1; j < input.size() - 3; j++) { for (int k = j + 1; k < input.size() - 2; k++) { for (int m = k + 1; m < input.size() - 1; m++) { for (int n = m + 1; n < input.size(); n++) { mi = min(mi,abs(2*(input[i] + input[j] + input[k] + input[m] + input[n]) - sum)); } } } } } cout << mi << endl; system("pause"); return 0; } void splits(string& inputs, vector<int>& input, string pattern) { inputs += pattern; for (int i = 0; i < inputs.length();i++) { int pos = inputs.find(pattern, i); if(pos < inputs.length()) { string temp = inputs.substr(i,pos - i ); if(!temp.empty() && temp!= pattern) { input.push_back(stoi(temp)); } } } }