第十届蓝桥杯省赛C++B组 组队

试题 A:组队ios

本题总分:5 分spa

【问题描述】code

       做为篮球队教练,你须要从如下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容。blog

       每位球员担任 1 号位至 5 号位时的评分以下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大多是多少?string

       (若是你把以上文字复制到文本文件中,请务必检查复制的内容是否与文 档中的一致。在试题目录下有一个文件 team.txt,内容与上面表格中的相同, 请注意第一列是编号)it

【答案提交】
       这是一道结果填空的题,你只须要算出结果后提交便可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将没法得分。
 io

答案:490class

思路:第一题嘛,没什么好说的,就是暴力!(粗心的我竟然选了同一我的)stream

参考代码:map

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<queue>
#include<map>
#include<set>
using namespace std;
struct player
{
	int no;
	int a,b,c,d,e;
}team[20];
 
int main()
{
	FILE *fp=fopen("team.txt","r");
	for(int i=0;i<20;i++)
		fscanf(fp,"%d%d%d%d%d%d",&team[i].no,&team[i].a,&team[i].b,&team[i].c,&team[i].d,&team[i].e);
	int ans=0;
	for(int i=0;i<20;i++)
	{
		if(!team[i].a)
			continue;
		for(int j=0;j<20;j++)
		{
			if(j==i||!team[j].b)
				continue;
			for(int k=0;k<20;k++)
			{
				if(k==j||k==i||!team[k].c)
					continue;
				for(int m=0;m<20;m++)
				{
					if(m==k||m==j||m==i||!team[m].d)
						continue;					
					for(int n=0;n<20;n++)
					{
						if(n==m||n==k||n==j||n==i||!team[n].e)
							continue;
						if(team[i].a+team[j].b+team[k].c+team[m].d+team[n].e>ans)
							ans=team[i].a+team[j].b+team[k].c+team[m].d+team[n].e;					
					}
				}
			}
		}
	}
	printf("%d\n",ans);
	return 0;
}