题目
试题 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 }