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