篮球比赛

编程 | 100分]篮球比赛

【篮球比赛】篮球(5V5)比赛中,每个球员拥有一个战斗力,每个队伍的所有球员战斗力之和为该队伍的总体战斗力。现有10个球员准备分为两队进行训练赛,教练希望2
个队伍的战斗力差值能够尽可能的小,以达到最佳训练效果。给出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));
			}
		}
	}
}


全部评论

相关推荐

05-01 22:41
中南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务