試題 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; }