2019蓝桥杯真题笔记|组队

题目

试题 A: 组队
本题总分:5 分
【问题描述】
作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,
组成球队的首发阵容。
每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1
号位至 5 号位的评分之和最大可能是多少?

暴力解法

先读取文件中的数据,并存放在六个数组中(num数组是为了冲掉队员编号,并没有用处),然后开始五层循环

注意两点:①当某位队员在某位置得分为0时,直接退出此次循环;

     ②一个队员只能出现一次,比如a位置用了i队员,那么b位置的j队员就不能与i相同,即j!=i;后面的同理

 1 //19'A组队 
 2 #include<bits/stdc++.h> 
 3 using namespace std;
 4 int main(){
 5     FILE*fp=fopen("team.txt","r");
 6     int a[21],b[21],c[21],d[21],e[21],num[21];
 7     int ans=-1;
 8     for(int i=0;i<20;i++){
 9         fscanf(fp,"%d%d%d%d%d%d",&num[i],&a[i],&b[i],&c[i],&d[i],&e[i]);
10     }
11     for(int i=0;i<20;i++){
12         int mark;
13         if(a[i]==0) continue;
14         for(int j=0;j<20;j++){
15             if(b[j]==0||j==i) continue;
16             for(int k=0;k<20;k++){
17                 if(c[k]==0||k==j||k==i) continue;
18                 for(int l=0;l<20;l++){
19                     if(d[l]==0||l==j||l==i||l==k) continue;
20                     for(int m=0;m<20;m++){
21                         if(e[m]==0||m==j||m==i||m==k||m==l) continue;
22                         mark=a[i]+b[j]+c[k]+d[l]+e[m];
23                         if(mark>ans) ans=mark;
24                     }
25                 }
26             }
27         }
28     }
29     printf("%d",ans);
30 }

猜你喜欢

转载自www.cnblogs.com/taiga/p/12465979.html