试题 A:组队
本题总分:5 分
【问题描述】
作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容。
每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少?
(如果你把以上文字复制到文本文件中,请务必检查复制的内容是否与文 档中的一致。在试题目录下有一个文件 team.txt,内容与上面表格中的相同, 请注意第一列是编号)
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
代码
#include <iostream>
#include <cstdio>
using namespace std;
int team[20][6] = {
{1, 97, 90, 0, 0, 0},
{2, 92, 85, 96, 0, 0},
{3, 0, 0, 0, 0, 93},
{4, 0, 0, 0, 80, 86},
{5, 89, 83, 97, 0, 0},
{6, 82, 86, 0, 0, 0},
{7, 0, 0, 0, 87, 90},
{8, 0, 97, 96, 0, 0},
{9, 0, 0, 89, 0, 0},
{10, 95, 99, 0, 0, 0},
{11, 0, 0, 96, 97, 0},
{12, 0, 0, 0, 93, 98},
{13, 94, 91, 0, 0, 0},
{14, 0, 83, 87, 0, 0},
{15, 0, 0, 98, 97, 98},
{16, 0, 0, 0, 93, 86},
{17, 98, 83, 99, 98, 81},
{18, 93, 87, 92, 96, 81},
{19, 0, 0, 0, 89, 92},
{20, 0, 99, 96, 95, 81}
};
int main() {
int ans = 0;
for (int i = 0; i < 20; ++i) {
for (int j = 0; j < 20; ++j) {
if (j != i)
for (int k = 0; k < 20; ++k) {
if (k != j && k != i)
for (int l = 0; l < 20; ++l) {
if (l != k && l != j && l != i)
for (int m = 0; m < 20; ++m) {
if (m != l && m != k && m != j && m != i) {
if (team[i][1] + team[j][2] + team[k][3] + team[l][4] + team[m][5] > ans)
ans = team[i][1] + team[j][2] + team[k][3] + team[l][4] + team[m][5];
}
}
}
}
}
}
cout << ans << endl;
return 0;
}