蓝桥杯2019年C/C++ B组第一题《组队》 您所在的位置:网站首页 蓝桥杯是组队还是个人的 蓝桥杯2019年C/C++ B组第一题《组队》

蓝桥杯2019年C/C++ B组第一题《组队》

2024-07-10 20:34| 来源: 网络整理| 查看: 265

题目描述

作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容。

每位球员担任 1号位至 5 号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少? _JDYHX8305MI9W173K6.png

题目解析

这道题目本意就是找五列的最大值加起来,但是要注意的是,一个人只能在存在一个位置,所以如果找到的最大值存在在同一行,答案就不对了。 在考场上,我并不建议对这道题编码来实现,可以采取人工去数的办法,我们可以看到第一列的最大值是98(17号位),第二列是99(第10号位),第三列是99(第17号位)与第一列冲突,因此要找一个次大位,98(第15号位),第四列98(第17号位)与第一列冲突,因此要找一个次大位97(第11号位),第五列最大值98(第12号位)。答案为这几个数的和490。 因为是平时练习,这里同样给出编码的方式。 编码主要是一个暴力枚举的思路,枚举五个位置分别选谁,这样每层循环就有20个可选值,只要保证5个位置分别不冲突,求出和最大的一种即可。代码如下,不过比赛中还是不建议敲代码做这道题的。

#include using namespace std; int one[20] = {97, 92, 0, 0, 89, 82, 0, 0, 0, 95, 0, 0, 94, 0, 0, 0, 98, 93, 0, 0}; int two[20] = {90, 85, 0, 0, 83, 86, 0, 97, 0, 99, 0, 0, 91, 83, 0, 0, 83, 87, 0, 99}; int three[20] = {0, 96, 0, 0, 97, 0, 0, 96, 89, 0, 96, 0, 0, 87, 98, 0, 99, 92, 0, 96}; int four[20] = {0, 0, 0, 80, 0, 0, 87, 0, 0, 0, 97, 93, 0, 0, 97, 93, 98, 96, 89, 95}; int five[20] = {0, 0, 93, 86, 0, 0, 90, 0, 0, 0, 0, 98, 0, 0, 98, 86, 81, 98, 92, 81}; int main() { 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 l = 0;l < 20; l++) { for(int m = 0; m < 20; m++) { if((i != j)&&(i != k)&&(i != l)&&(i != m) &&(j != k)&&(j != l)&&(j != m) &&(k != l)&&(k != m) &&(l != m)) { if((one[i] + two[j] + three[k] + four[l] + five[m]) > max) { max = one[i] + two[j] + three[k] + four[l] + five[m]; } } } } } } } cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有